Trying to saveArray, got error - Cannot convert value of type '[Data]' to expected argument type '[Dictionary<String, AnyObject>]'
我正在尝试使用此函数保存从 tableview 添加的数组:
1 2 3 4 | class func saveArray(_ value: [Dictionary<String, AnyObject>], key: String) { let data = NSKeyedArchiver.archivedData(withRootObject: value) UserDefaults.standard.set(data, forKey: key) } |
下面是我要保存数组的函数:
1 2 3 4 5 6 | func addItemCat(items: [Data]) { print("ITEM:", items) dataSource.myListTableViewController.myListArr = items self.myListTV.isHidden = false UserDefaultsHelper.saveArray(items, key: Constants.myList.myList) } |
但是,我收到此错误:无法将类型"[Data]"的值转换为预期的参数类型"[Dictionary String, AnyObject]"
以下是我的数据模型:
数据模型屏幕截图
我是 Swift 新手,希望有人能解释一下问题所在。
问题在于数据类型,
解决这个问题:
首先,您不应该使用预定义的关键字来创建您的自定义对象。改用
1 2 3 | struct DataObject { } |
现在将您的
1 2 3 4 | class func saveArray(_ value: [DataObject], key: String) { let data = NSKeyedArchiver.archivedData(withRootObject: value) UserDefaults.standard.set(data, forKey: key) } |
和
1 2 3 4 5 6 | func addItemCat(items: [DataObject]) { print("ITEM:", items) dataSource.myListTableViewController.myListArr = items self.myListTV.isHidden = false UserDefaultsHelper.saveArray(items, key: Constants.myList.myList) } |