所以我在我的主应用程序(objective-c)中将一个布尔值保存到userdefaults然后我在swift扩展中读取值(通过组)。如果我读取下面的值就可以了:
if let isKey = userDefaults.object(forKey: Constants.GroupShares.isKey) as? Bool {
if !isKey {
// awesome
}
}
但是,如果我像下面这样阅读它将永远是假的:
let isKey = userDefaults.bool(forKey: Constants.GroupShares.isKey)
我认为快速和客观的布尔是完全兼容的,但这让我们想知道我是否误解了什么?
同样可行的解决方案就是代码行太多了。如果这是唯一的解决方案,我宁愿简单地使用一个对象并使用它。
答案 0 :(得分:1)
我没有真正的答案。但你可以在一行中做同样的事情:
let isKey = (userDefaults.object(forKey: Constants.GroupShares.isKey) as? Bool) ?? false
答案 1 :(得分:1)
bool(forKey defaultName: String)
总是提供Bool
,如果找到密钥则返回值(true或false),否则返回false。所以是的,在我看来,可能最好将Bool存储为一个对象,以区分缺少密钥和假值。