尝试保存数组时出现错误-无法将类型[Data]的值转换为预期的参数类型'[Dictionary <string,anyobject =“”>]'

时间:2019-02-15 02:47:38

标签: ios arrays swift nsdictionary typecase

我正在尝试使用此功能保存从tableview添加的数组:

<field name="active_date" options="{'datepicker':{'minDate': '2018-09-01'}}"/>

下面是我要保存数组的函数:

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]'

以下是我的数据模型: data model screencap

我是Swift的新手,希望有人能解释出什么问题。

1 个答案:

答案 0 :(得分:1)

问题出在数据类型上,saveArray函数需要字典[Dictionary<String, AnyObject>]的类型数组的value参数,但是您正在传递数据模型对象的数组,这是类型不匹配的错误。

要解决此问题:

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

struct DataObject {

}

现在将saveArray函数更改为:

class func saveArray(_ value: [DataObject], key: String) {
    let data = NSKeyedArchiver.archivedData(withRootObject: value)
    UserDefaults.standard.set(data, forKey: key)
}

addItemCat的功能是:

func addItemCat(items: [DataObject]) {
    print("ITEM: ", items)
    dataSource.myListTableViewController.myListArr = items
    self.myListTV.isHidden = false
    UserDefaultsHelper.saveArray(items, key: Constants.myList.myList)
}