我正在尝试在UserDefaults
中保存一个元组数组。为此,我在互联网上发现NSKeyedArchiver.archivedData
可用于将元组数据转换为NSData类型。转换后,元组数据可以轻松保存在UserDefaults中。
下面是我要保存的元组数组
[((Color:Color, ID:ID),(DefectType:Type,DefectCode:Code))]
但它给了我以下错误
由于未捕获的异常而终止应用 ' NSInvalidArgumentException',原因:' - [_ SwiftValue encodeWithCoder:]:无法识别的选择器发送到实例0x1702d47b0
以下是我正在使用的代码
let DATA = ((Color:Color, ID:ID),(DefectType:Type,DefectCode:Code))
let ArchivedDATA = NSKeyedArchiver.archivedData(withRootObject: [DATA])
print("ArchivedDATA =",ArchivedDATA)
defaults.setValue(ArchivedDATA, forKeyPath: "\(self.CodeLabel.text!)")
if let data = defaults.object(forKey: "\(self.AuditCodeLabel.text!)") as? NSData{
SavedDefects = NSKeyedUnarchiver.unarchiveObject(with: data as Data) as? [((Color:UIColor, ID:String),(DefectType:String,DefectCode:String))]
print("dataUnarchived =",SavedDefects)
}
请有人帮我将元组数组保存到UserDefaults.If我出错了,请告诉我保存它的正确方法。
谢谢