如何在swift3中保存元组数组

时间:2017-01-03 10:40:58

标签: swift swift3 tuples nsuserdefaults

我正在尝试在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我出错了,请告诉我保存它的正确方法。

谢谢

0 个答案:

没有答案