【发布时间】:2020-04-20 09:44:43
【问题描述】:
我在将字典保存到 UserDefaults() 时有点困难。
尝试UserDefaults.standard.set(dict1, forKey: "dict1",但出现错误:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“尝试插入非属性列表对象
也试过NSKeyedArchiver,但是弹出这个错误:
由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'-[__SwiftValue encodeWithCoder:]: unrecognized selector sent to instance
这是字典:
@State var dict1: Dictionary<String, Any> = [
"progress": Double(0.5),
"count": 10,
"max": 20,
"name": "dict1",
"value": Double(10.00),
"color": Color.green,
"completed": false,
"incrament": Double(1)
]
这是 Xcode 11 SwiftUI。 有什么帮助或提示吗?提前谢谢!
【问题讨论】:
-
这可能是因为您尝试存储 Color.green。尝试删除它(现在),看看会发生什么。
-
正如 Rob 提到的那样,您 - 绝对 - 无法保存
Color,因为它不符合NSCoding。在 Swift 中有比 objective-c-ishNSKeyedArchiver更好的方法 -
问题在于存储 Color.green。您必须将其转换为数据,然后以相同的方式恢复。
-
好的,谢谢。只是使用十六进制值代替颜色 - 似乎是一个更简单的解决方法!
标签: swift swiftui nsuserdefaults