从NSUserDefaults()获取时是否让子句 [英] If let clause when getting from NSUserDefaults()
本文介绍了从NSUserDefaults()获取时是否让子句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试管理这样的变量:
I'm trying to manage a variable like this:
var isFinished: Bool {
get {
return NSUserDefaults.standardUserDefaults().boolForKey("isFinished")
}
set {
NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: "isFinished")
NSUserDefaults.standardUserDefaults().synchronize()
}
}
这可行,但是,我试图通过获取时使用if let
使其更安全:
This works, however, I'm trying to make it more safe by using an if let
when getting:
var isFinished: Bool {
get {
if let isFinished = NSUserDefaults.standardUserDefaults().boolForKey("isFinished") as? Bool {
return isFinished
}
}
set {
NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: "isFinished")
NSUserDefaults.standardUserDefaults().synchronize()
}
}
这将给出黄色错误:从'Bool'到'Bool'的条件强制转换总是成功."
然后:
if let isFinished = NSUserDefaults.standardUserDefaults().boolForKey("isFinished") {
return isFinished
}
现在更糟了:用于条件绑定的初始化程序必须具有可选类型,而不是'Bool'"
处理此问题的正确方法是什么?
What's the correct way of handling this?
推荐答案
您的主要方法很好.
boolForKey
不会返回可选的,因此任何可选的绑定尝试都是没有意义的.
boolForKey
of NSUserDefaults
doesn't return an optional therefore any optional binding attempt is meaningless.
func boolForKey(_ aKey: String) -> Bool
如果布尔值与指定键相关联,则该值为 回来.如果未找到密钥,则此方法返回NO.
If a Boolean value is associated with the specified key, that value is returned. If the key was not found, this method returns NO.
这篇关于从NSUserDefaults()获取时是否让子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文