Swift 3和UserDefaults
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift 3和UserDefaults相关的知识,希望对你有一定的参考价值。
我有相当数量的代码看起来像这样......
let wantsIgnored = UserDefaults.standard.bool(forKey: "ViewShowIgnoredElements") ?? true
我们的想法是,如果默认值不包含该密钥,它仍将获得合理的默认值。这在Swift 2中运行良好,但在Swift 3中它警告......
Left side of nil coalescing operator '??' has non-optional type 'Double', so the right side is never used
因此,似乎UserDefaults.standard.bool
将始终返回一个值,如果它是Bool,我认为这是有意义的。好的,但解决这个问题的最佳方法是什么?我可以用objectForKey
检查每个键,但这会使代码变得更加混乱。或者我根本无法进行此检查,并且确保每个键都在初始默认设置中,我猜。
我敢肯定,我不是唯一一个面对这个,任何规范解决方案的人吗?
答案
我担心你会认为这很麻烦,但你可以这样写:
let wantsIgnored = UserDefaults.standard.object(forKey: "ViewShowIgnoredElements") as? Bool ?? true
请试试。
另一答案
不应该是:
let wantsIgnored = UserDefaults.standard.set(true, forKey: "ViewShowIgnoredElements")
然后改变它:
UserDefaults.standard.set(false, forKey: "ViewShowIgnoredElements")
并称之为:
let xxxx = UserDefaults.standard.bool(forKey: "ViewShowIgnoredElements")
要么:
func boolTest (_myBool: Bool){
if _myBool{
//do something
}
}
//and call that function
boolTest(_myBool: UserDefault.standard.bool(forKey: "ViewShowIgnoredElements"))
以上是关于Swift 3和UserDefaults的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 UserDefaults 设置 NSMutableArray
Swift 3 - UserDefaults 无缘无故自动清除
如何使用 UserDefaults.standard 在 Swift 3.0 中保持会话?