Ios 更新字典中的值

Ios 更新字典中的值,ios,swift,nsdictionary,Ios,Swift,Nsdictionary,我有一个类型为[String:Any]()的字典,它添加了一个值,如下所示 myDictionary["qty"] = "1" myDictionary.updateValue(cell.qtyPickerField.text!, forKey: "qty") arrayOfDictionary.append(myDictionary) 现在qty是我可以从选择器视图更改的数量。因此,如果我从pickerview中选择一个值3,更新的数量现在将是3,而不是1。我一直在努力做到的 myD

我有一个类型为
[String:Any]()
的字典,它添加了一个值,如下所示

myDictionary["qty"] = "1"
 myDictionary.updateValue(cell.qtyPickerField.text!, forKey: "qty")

 arrayOfDictionary.append(myDictionary)
现在
qty
是我可以从选择器视图更改的数量。因此,如果我从pickerview中选择一个值3,更新的数量现在将是3,而不是1。我一直在努力做到的

myDictionary["qty"] = "1"
 myDictionary.updateValue(cell.qtyPickerField.text!, forKey: "qty")

 arrayOfDictionary.append(myDictionary)
但是在这里,因为我使用的是append,所以在数组中又添加了一个dictionary,其数量值为3。但是我想要实现的是用3而不是1来更新我已经拥有的字典,而不是像我现在这样再添加一个字典

但是我不知道怎样才能做到这一点

编辑。选择器视图didSelectRow中的代码如下所示

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        if pickerView is MyPickerView {

            if let cell = (pickerView as! MyPickerView).cell {

        cell.qtyPickerField.text = noOfItems[row] // for displaying of nos picker view


  myDictionary.updateValue(cell.qtyPickerField.text!, forKey: "qty")

 arrayOfDictionary.append(self.appDelegate.myDictionary)

        let data = try! JSONSerialization.data(withJSONObject: arrayOfDictionary, options: .prettyPrinted)
                print(data)
        self.appDelegate.jsonValue = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String
        print(self.appDelegate.jsonValue)


                }
            }

        }
    }

首先从
arrayOfDictionary
获取字典:

let index : Int = // index for myDictionary
myDictionary = arrayOfDictionary[index]
然后


swift中的数组/字典是值类型,您需要的是act Dictionary作为引用类型。在您的情况下,请使用
NSMutableDictionary

let dict = NSMutableDictionary()
var array = [NSMutableDictionary]()
dict["qty"] = "1"
array.append(dict)
print("Array has:\(array)")
print("------ Now we'll change the data withoout appending -----")
dict["qty"] = "3"
print("Array has:\(array)")
控制台日志:

Array has:[{
    qty = 1;
}]
------ Now we'll change the data withoout appending -----
Array has:[{
    qty = 3;
}]

你还没有提到arrayOfDictionary在哪里,为什么会在那里。那是什么?
arrayOfDictionary
在pickerview
didSelectRow
中,它是这样声明的…
var arrayOfDictionary=[[String:Any]]()
而不是这部分…
arrayOfDictionary.append(myDictionary)
?你不需要把字典附加到任何东西上。你可以发布didSelectRow代码吗?首先你需要从数组中获取字典,或者至少知道它在数组中的索引,然后你可以用同样的方法修改它。所以你的意思是答案是这样的…
myDictionary.updateValue(cell.qtyPickerField.text!,forKey:“qty”)myDictionary[“qty”]=cell.qtyPickerField.text如果myDictionary已经在数组中,则不需要重新分配它。删除附加行。请尝试我的答案,并让我知道它是否如您在我的示例中所看到的那样有效。添加后,我打印了值,然后更新了词典,然后我不添加它。如果你们能指出答案中的错误,我将不胜感激使用
[String:Any]
而不是
NSMutableDictionary
您应该是最新的。