Ios 试图保存数组时,出现错误-无法转换类型为';[数据]';到预期的参数类型';[Dictionary<;String,AnyObject>;]&x27;

Ios 试图保存数组时,出现错误-无法转换类型为';[数据]';到预期的参数类型';[Dictionary<;String,AnyObject>;]&x27;,ios,arrays,swift,nsdictionary,typecase,Ios,Arrays,Swift,Nsdictionary,Typecase,我正在尝试使用以下函数保存从tableview添加的数组: class func saveArray(_ value: [Dictionary<String, AnyObject>], key: String) { let data = NSKeyedArchiver.archivedData(withRootObject: value) UserDefaults.standard.set(data, forKey: key) } 但是,我遇

我正在尝试使用以下函数保存从tableview添加的数组:

class func saveArray(_ value: [Dictionary<String, AnyObject>], key: String) {
        let data = NSKeyedArchiver.archivedData(withRootObject: value)
        UserDefaults.standard.set(data, forKey: key)
    }
但是,我遇到了以下错误:无法将“[Data]”类型的值转换为预期的参数类型“[Dictionary String,AnyObject]”

以下是我的数据模型:


我是Swift新手,希望有人能解释问题所在。

问题在于数据类型,
saveArray
函数需要dictionary的type array的值参数
[dictionary]
,但您传递的是数据模型对象数组,这是一个类型不匹配错误

要解决此问题:

首先,不应使用预定义的关键字来创建自定义对象。改用
DataObject

struct DataObject {

}
现在将
saveArray
函数更改为:

class func saveArray(_ value: [DataObject], key: String) {
    let data = NSKeyedArchiver.archivedData(withRootObject: value)
    UserDefaults.standard.set(data, forKey: key)
}
func addItemCat(items: [DataObject]) {
    print("ITEM: ", items)
    dataSource.myListTableViewController.myListArr = items
    self.myListTV.isHidden = false
    UserDefaultsHelper.saveArray(items, key: Constants.myList.myList)
}
addItemCat
,功能如下:

class func saveArray(_ value: [DataObject], key: String) {
    let data = NSKeyedArchiver.archivedData(withRootObject: value)
    UserDefaults.standard.set(data, forKey: key)
}
func addItemCat(items: [DataObject]) {
    print("ITEM: ", items)
    dataSource.myListTableViewController.myListArr = items
    self.myListTV.isHidden = false
    UserDefaultsHelper.saveArray(items, key: Constants.myList.myList)
}

saveArray
具有dictionary
[dictionary]
数组的param类型,但是您正在传递数据数组
[Data]
,显然它不起作用,请尝试将
[dictionary]
更改为
[Data]
?@Tj3n,我已经更改了,但仍然有相同的错误谢谢@ankitjayaswal的解释,我真的很感激:)