我正在使用UserDefaults
将值存储到首选项中。
我有一个模板类和一个获取值的方法(需要被覆盖)
func getValue(_ value: T?) -> Any?
{
return value
}
当我打电话时:
UserDefaults.standard.set(getValue(value), forKey: "pref_key")
其中value
可以是nil
,
我收到这个错误:
由于未捕获的异常而终止应用 'NSInvalidArgumentException',原因:'尝试插入非属性 列表对象为键pref_key'
为null
如果值为nil,是不是应该删除密钥?
答案 0 :(得分:1)
问题是尝试在NSNull
中存储UserDefaults
的值。这不受支持。 nil
很好,它只是删除任何现有值。但NSNull
与nil
不同。
你需要处理这件事。这是一个解决方案:
var val = getValue(value)
if val is NSNull {
val = nil
}
UserDefaults.standard.set(val, forKey: "pref_key")