Ios 粗活
我正在尝试让NSUserDefaults在我的应用程序中工作。下面的代码用于检查NSUserDefaults中是否存在名为“iCloudOn”的bool值。如果存在,则会将UISwitch的值指定给NSUserDefault。如果没有,则继续并将false指定给NSUserDefault 我已经标记了我要获取错误的行。我收到的错误是“条件绑定中的绑定值必须是可选类型”。我无法理解为什么会出现此错误,以及需要执行哪些操作才能使其正常工作。有人能帮忙解释一下吗Ios 粗活,ios,swift,nsuserdefaults,Ios,Swift,Nsuserdefaults,我正在尝试让NSUserDefaults在我的应用程序中工作。下面的代码用于检查NSUserDefaults中是否存在名为“iCloudOn”的bool值。如果存在,则会将UISwitch的值指定给NSUserDefault。如果没有,则继续并将false指定给NSUserDefault 我已经标记了我要获取错误的行。我收到的错误是“条件绑定中的绑定值必须是可选类型”。我无法理解为什么会出现此错误,以及需要执行哪些操作才能使其正常工作。有人能帮忙解释一下吗 class SettingsTable
class SettingsTableViewController: UITableViewController{
@IBOutlet weak var iCloudUISwitch: UISwitch!
let appSettings = NSUserDefaults.standardUserDefaults()
override func viewDidLoad() {
super.viewDidLoad()
//THIS IS THE LINE I AM GETTING AN ERROR ON
if let iCloudOn = appSettings.boolForKey("iCloudOn") {
//iCloud is on
iCloudUISwitch.on = appSettings.boolForKey("iCloudOn")
}
else {
//Nothing stored in NSUserDefaults yet. Set a value.
appSettings.setValue(false, forKey: "iCloudOn")
}
}
函数
boolforky
不返回可选值。它总是返回true或false。如果该键在用户默认值中不存在,则返回false
您应该使用objectForKey,它返回AnyObject?
,然后将其强制转换为Bool
编辑:
如果今天为Swift编写此函数,它几乎肯定会返回
Bool?
类型(可选Bool),这将是可选Bool的完美用例。但是,NSUserDefaults是在Swift之前很久定义和编写的(它是下一步的一部分)函数boolforky
不返回可选值。它总是返回true或false。如果该键在用户默认值中不存在,则返回false
您应该使用objectForKey,它返回AnyObject?
,然后将其强制转换为Bool
编辑:
如果今天为Swift编写此函数,它几乎肯定会返回
Bool?
类型(可选Bool),这将是可选Bool的完美用例。但是,NSUserDefaults是在Swift之前很久定义和编写的(它是下一步的一部分)您可以只使用appSettings.boolforky('iCloudOn')
,而不使用if let
来获取您的值。根据文档,如果没有与键关联的值,则返回false
您可以只使用
appSettings.boolForKey('iCloudOn')
而不使用if let
来获取您的值。根据文档,如果没有与键关联的值,则返回false