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 中保持会话?

userdefaults 使用问题 swift 3

如何将完整的 UserDefaults 列表放入 tableview - Swift 3

如何使用 userDefaults 保存打印数组(swift 3)