试图saveArray,得到错误 - 无法将'[Data]'类型的值转换为预期的参数类型'[Dictionary] ]”

问题描述 投票:0回答:1

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

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

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

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

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

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

ios arrays swift nsdictionary typecase
1个回答
1
投票

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

要解决这个问题:

首先,您不应使用预定义的关键字来创建自定义对象。使用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)
}
© www.soinside.com 2019 - 2024. All rights reserved.