在Objective-C中,当我有一个数组 NSArray *array; 我想检查一下是不是空的,我总是这样做: if (array.count > 0) { NSLog(@"There are objects!"); } else { NSLog(@"There are no objects…"); } 这样,没有必要检查array == nil因为这种情况会导致代码陷入else情况,以及一个非零,但空的数组会做。 然而,在Swift中,我偶然发现了我有一个可选数组的情况: var array: [Int]? 我无法弄清楚使用哪种条件。 我有一些select,如: 选项A:在相同的条件下检查非空和空的情况: if array != nil && array!.count > 0 { println("There are objects") } else { println("No objects") } 选项B:使用let绑定数组: if let unbindArray = array { […]
我想在XCode 6.1中以编程方式设置UIImageView: @IBOutlet weak var bgImage: UIImageView! var image : UIImage = UIImage(named:"afternoon")! bgImage = UIImageView(image: image) bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200) view.addSubview(bgImage) 但Xcode是说与bgImage = UIImageView(image: image) “预期的声明”图像"afternoon"是一个PNG,我的理解是PNG不需要在XCode 6.1扩展。 也试过只是bgImage.image = UIImage(named: "afternoon") ,但仍然得到: UPDATE 好的,我已经把代码更新UIImageView到viewDidLoad函数,但UIImageView仍然没有显示的图像(它存在于基地目录下午.png): @IBOutlet weak var bgImage: UIImageView! @IBOutlet weak var dateLabel: UILabel! @IBOutlet weak var timeLabel: […]
我想知道是否有可能直接发送一个数组(不包装在字典中)的POST请求。 显然parameters参数应该得到一个映射:[String:AnyObject]? 但是我想能够发送下面的例子json: [ "06786984572365", "06644857247565", "06649998782227" ]
我是Swift新手,正在尝试一个调度器。 我有开始时间select,我需要添加5分钟(或其倍数)的开始时间,并显示在UILabel? @IBAction func timePickerClicked(sender: UIDatePicker) { var dateFormatter = NSDateFormatter() dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle var dateStr = dateFormatter.stringFromDate(startTime.date) let sttime = dateStr startTimeDisplay.text = dateStr } // How to advance time by 5 minutes for each section based on the start time selected and display time // section 1 = start time + 5 // […]
在我更新xCode 6之前,我没有任何问题将一个双重stringbur现在它给了我错误 var a: Double = 1.5 var b: String = String(a) 它给了我错误消息“双不能转换为string”。 有没有其他办法可以做到这一点?
在Swift中,是否有任何方法来检查索引是否存在于数组中,而不会引发致命错误? 我希望我能做这样的事情: let arr: [String] = ["foo", "bar"] let str: String? = arr[1] if let str2 = arr[2] as String? { // this wouldn't run println(str2) } else { // this would be run } 但是我明白了 致命错误:数组索引超出范围
我试图写一个简单的方法来要求用户访问他们的地址簿,然后打印出地址簿中每个人的名字。 我已经看到了很多教程,解释了如何在Objective-C中做到这一点,但是我们很难将其转换为快速。 这是迄今为止我所做的。 下面的块在我的viewDidLoad()方法中运行,并检查用户是否授权访问通讯录,如果他们还没有授权访问,第一个if语句将要求访问。 本节按预期工作。 var emptyDictionary: CFDictionaryRef? var addressBook: ABAddressBookRef? if (ABAddressBookGetAuthorizationStatus() == ABAuthorizationStatus.NotDetermined) { println("requesting access…") addressBook = !ABAddressBookCreateWithOptions(emptyDictionary,nil) ABAddressBookRequestAccessWithCompletion(addressBook,{success, error in if success { self.getContactNames(); } else { println("error") } }) } } else if (ABAddressBookGetAuthorizationStatus() == ABAuthorizationStatus.Denied || ABAddressBookGetAuthorizationStatus() == ABAuthorizationStatus.Restricted) { println("access denied") } else if (ABAddressBookGetAuthorizationStatus() == ABAuthorizationStatus.Authorized) { […]
我有ViewController与2 UITextField元素:login和密码。 我为这些字段设置了委托,其中包括以下代码: func textFieldShouldReturn(textField: UITextField) -> Bool { if textField === self.loginField { self.loginField.resignFirstResponder() self.passwordField.becomeFirstResponder() return false } return true } 当他按下键盘上的下一步button时,这个逻辑应该将用户从login文本字段切换到密码。 但是,我坚持有小故障:之后 self.passwordField.becomeFirstResponder() login字段中的文本跳转到左上angular并返回。 更奇怪的是:这个毛刺只是第一次重现,那么你需要重新创buildViewController来观察这个行为 这里是故障的videohttp://tinypic.com/player.php?v=6nsemw%3E&s=8#.VgVb3cuqpHx 我结束了这个: func textFieldShouldReturn(textField: UITextField) -> Bool { if textField === self.loginField { self.loginField.resignFirstResponder() // Shitty workaround. Hi, Apple! self.loginField.setNeedsLayout() self.loginField.layoutIfNeeded() self.passwordField.becomeFirstResponder() return false } return true }
我刚刚创build了我的第一个Swift项目,在AppDelegate.swift有一行上面有一个类声明 – 为什么在那里? … import UIKit import CoreData @UIApplicationMain // <- WHY IS IT HERE? class AppDelegate: UIResponder, UIApplicationDelegate { …
我试图testing如果一个Swiftstring开始或以一定的值结束。 这些方法不存在: var str = "Hello, playground" str.startsWith("Hello") // error str.endsWith("ground") // error 我也想获得前缀和后缀string。 我可以find一个子string,就像在这里和这里回答的那样,但是在Swift中,范围是如此的痛苦。 有没有更简单的方法来做到这一点? (当我阅读文档时 ,我偶然发现了答案,因为我的答案没有出现在我的search条件中,所以我在这里添加了我的问答。)