【发布时间】:2016-04-11 00:02:17
【问题描述】:
我需要存储一个可以包含 nil 作为值的字典
例子
var someOptionalVar: String? = nil
var dict: [String: AnyObject?] = [
"someOptionalVar": self.someOptionalVar
]
defaults.setObject(dict, forKey: self.nsUserDefaultsKey)
但它给了我这个错误
无法将“[String: AnyObject?]”类型的值转换为预期值 参数类型'AnyObject?'
我知道我可以保留 nil 变量,然后当我从 NSUserDefaults 解析字典时,我会将变量(对应于缺少的属性)设置为 nil,但这不是我想做的。
那么如何在 NSUserDefaults 中存储 nil 值?
【问题讨论】:
-
我正要发布那个链接。看起来它不适用于可选项,因为它们不能由 Foundation 类型表示。
-
@Whirlwind 类似但不一样,这是
Optional的Array,这是Optional的Dictionary。如果您想在默认值中明确指出某个键的值是nil,那么NSNull可能是最好的。如果键值对不在Dictionary中,也可以省略键并将值假定为nil。 -
归根结底,您不能在 NSUserDefaults 中存储任何无法桥接到 Objective-C 类型之一的内容...... Swift 字典必须能够桥接到 NSDictionary,这意味着没有可选项。
-
在 Swift
Dictionary中,键和值都必须是非可选的,因为将nil分配给键会从字典中删除键。
标签: swift nsuserdefaults