我有一个简单的字典,它的定义如下:

var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]

现在我想在这个字典中添加一个元素:3:"efg"

我如何能追加3:“efg”到这个现有的字典?


当前回答

你在使用NSDictionary。除非你出于某种原因明确需要它是那种类型,否则我建议使用Swift字典。

你可以将一个Swift字典传递给任何需要NSDictionary的函数,而不需要任何额外的工作,因为dictionary <>和NSDictionary无缝地桥接在一起。原生Swift方式的优点是字典使用泛型类型,所以如果你用Int作为键,String作为值来定义它,你就不会错误地使用不同类型的键和值。(编译器会替你检查类型。)

根据我在你的代码中看到的,你的字典使用Int作为键和字符串作为值。要创建一个实例并在稍后添加一个项,您可以使用以下代码:

var dict = [1: "abc", 2: "cde"] // dict is of type Dictionary<Int, String>
dict[3] = "efg"

如果你以后需要将它赋值给NSDictionary类型的变量,只需要进行显式强制转换:

let nsDict = dict as! NSDictionary

并且,如前所述,如果你想将它传递给一个期望NSDictionary的函数,就按原样传递它,不需要任何强制转换或转换。

其他回答

Swift 5快乐编码

var tempDicData = NSMutableDictionary()

for temp in answerList {
    tempDicData.setValue("your value", forKey: "your key")
}

从Swift 5开始,以下代码收集工作。

 // main dict to start with
 var myDict : Dictionary = [ 1 : "abc", 2 : "cde"]

 // dict(s) to be added to main dict
 let myDictToMergeWith : Dictionary = [ 5 : "l m n"]
 let myDictUpdated : Dictionary = [ 5 : "lmn"]
 let myDictToBeMapped : Dictionary = [ 6 : "opq"]

 myDict[3]="fgh"
 myDict.updateValue("ijk", forKey: 4)

 myDict.merge(myDictToMergeWith){(current, _) in current}
 print(myDict)

 myDict.merge(myDictUpdated){(_, new) in new}
 print(myDict)

 myDictToBeMapped.map {
     myDict[$0.0] = $0.1
 }
 print(myDict)

我添加了字典扩展

extension Dictionary {   
  func cloneWith(_ dict: [Key: Value]) -> [Key: Value] {
    var result = self
    dict.forEach { key, value in result[key] = value }
    return result  
  }
}

你可以像这样使用克隆

 newDictionary = dict.reduce([3 : "efg"]) { r, e in r.cloneWith(e) }

我知道这可能会很晚,但它可能会对某人有用。 因此,在swift中将键值对追加到字典中,你可以使用updateValue(value:, forKey:)方法,如下所示:

var dict = [ 1 : "abc", 2 : "cde"]
dict.updateValue("efg", forKey: 3)
print(dict)
var dict = ["name": "Samira", "surname": "Sami"]
// Add a new enter code herekey with a value
dict["email"] = "sample@email.com"
print(dict)