我想知道是否有办法if let...NSUserDefaults
在关键具有已知值的构造中关闭/避免xcode中的"黄色"警告.
例如:
if let x = NSUserDefaults.standardUserDefaults().integerForKey("myKey") as? Int {...}
因为if let
我必须使用as?
.但是,由于我使用的是已知值类型(在本例中为整数),as? Int
因此实际上是多余的 - 这就是我收到'黄色警告'的原因.
思考?有没有更好的方法来编码这些类型的结构?
我的建议是解决问题,而不是消除警告.:)
NSUserDefaults.standardUserDefaults().integerForKey("myKey")
不返回Optional,并且类型是已知的,因此您既不需要可选绑定if let
也不需要类型转换as?
.
只是这个:
let x = NSUserDefaults.standardUserDefaults().integerForKey("myKey")
就足够了,因为.integerForKey
只要0
它不能得到实际值就返回.
如果您不喜欢获取默认值的这种行为(我没有),那么请不要使用.integerForKey
和使用objectForKey
可选绑定和类型转换.就像你先做的那样,但要.objectForKey
更换.integerForKey
.这样,如果密钥的值无法访问,您将获得实际的nil,而不是默认值.
if let x = NSUserDefaults.standardUserDefaults(). objectForKey("myKey") as? Int {...}