gpt4 book ai didi

ios - 尝试保存数组时出现错误 - 无法将类型 '[Data]' 的值转换为预期的参数类型 '[Dictionary]'

转载 作者:行者123 更新时间:2023-11-28 13:50:27 25 4
gpt4 key购买 nike

我正在尝试使用此函数保存从 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 的新手,我希望有人能解释一下问题是什么。

最佳答案

问题出在数据类型上,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)
}

关于ios - 尝试保存数组时出现错误 - 无法将类型 '[Data]' 的值转换为预期的参数类型 '[Dictionary<String, AnyObject>]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54702021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com