我有一个简单的字典,它的定义如下:
var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]
现在我想在这个字典中添加一个元素:3:"efg"
我如何能追加3:“efg”到这个现有的字典?
我有一个简单的字典,它的定义如下:
var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]
现在我想在这个字典中添加一个元素:3:"efg"
我如何能追加3:“efg”到这个现有的字典?
当前回答
从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)
其他回答
如果你的字典是Int到String,你可以简单地做:
dict[3] = "efg"
如果你的意思是向字典的值中添加元素,一个可能的解决方案是:
var dict = Dictionary<String, Array<Int>>()
dict["key"]! += [1]
dict["key"]!.append(1)
dict["key"]?.append(1)
您可以使用以下方式添加,并将Dictionary更改为NSMutableDictionary
dict["key"] = "value"
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)
你在使用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的函数,就按原样传递它,不需要任何强制转换或转换。