gpt4 book ai didi

iOS Swift 更新数组中的字典

转载 作者:行者123 更新时间:2023-11-30 13:12:25 24 4
gpt4 key购买 nike

我的字典中有一个字典数组。我这样初始化它:

var fillups:[NSMutableDictionary] = []

然后我像这样加载它:

fillups = userDefaults.object(forKey: car) as! NSArray as! [NSMutableDictionary]

然后,当我尝试更新数组中的字典元素时,出现“发送到不可变对象(immutable对象)的变异方法”错误。这是我更新记录的代码:

let dict=fillups[row]
dict.setValue(odometerField.text, forKey: "odometer")
dict.setValue(gallonsField.text, forKey: "gallons")
fillups[row]=dict

错误发生在我的第一个 setValue 行中。

最佳答案

NSUserDefaults 检索的对象是不可变的,即使它们在插入时是可变的。您需要获取从默认值中获得的不可变对象(immutable对象)并创建它们的可变版本。如果您不希望应用崩溃,也不应该在所有地方强制展开。

if let array = userDefaults.object(forKey: car) as? [NSDictionary] {
fillups = array.map { ($0.mutableCopy() as! NSMutableDictionary) }
}

您也不需要 fillips[row] = dict 行,因为 NSMutableDictionary 是引用类型,并且编辑从数组中提取的引用已经在编辑数组内的那个。

关于iOS Swift 更新数组中的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38596680/

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