Jos*_*osh 1 nsuserdefaults ios swift
我正在尝试让NSUserDefaults在我的应用程序中运行.下面的代码应该检查NSUserDefaults中是否存在名为"iCloudOn"的bool值.如果有,则将UISwitch的值分配给NSUserDefault.如果没有,则继续向NSUserDefault分配false.
我已经标记了我收到错误的行.我收到的错误是"条件绑定中的绑定值必须是可选类型." 我无法弄清楚为什么我会收到此错误以及我需要做些什么来使这项工作.任何人都可以帮忙解决一些问题
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")
}
}
Run Code Online (Sandbox Code Playgroud)
该函数boolForKey
不返回可选项.它总是返回true或false.如果用户默认值中不存在该键,则返回false.
您应该使用objectForKey,它返回AnyObject?
,然后将其强制转换为Bool
.
如果今天为Swift编写了这个函数,它几乎肯定会返回一个Bool?
类型(Optional Bool).这对于一个可选项来说是一个完美的用例.但是,NSUserDefaults在Swift之前定义并编写了很长时间(它是NextStep的一部分)
归档时间: |
|
查看次数: |
1729 次 |
最近记录: |