我有一个简单的字典,它的定义如下:
var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]
现在我想在这个字典中添加一个元素:3:"efg"
我如何能追加3:“efg”到这个现有的字典?
我有一个简单的字典,它的定义如下:
var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]
现在我想在这个字典中添加一个元素:3:"efg"
我如何能追加3:“efg”到这个现有的字典?
当前回答
(字符串:任何)
对于使用[String:Any]而不是Dictionary下面是扩展名
extension Dictionary where Key == String, Value == Any {
mutating func append(anotherDict:[String:Any]) {
for (key, value) in anotherDict {
self.updateValue(value, forKey: key)
}
}
}
其他回答
斯威夫特 3+
向Dictionary分配新值的示例。你需要声明它为NSMutableDictionary:
var myDictionary: NSMutableDictionary = [:]
let newValue = 1
myDictionary["newKey"] = newValue
print(myDictionary)
你在使用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的高阶函数之一来将数据追加到字典中。“减少”。遵循以下代码片段:
newDictionary = oldDictionary.reduce(*newDictionary*) { r, e in var r = r; r[e.0] = e.1; return r }
@Dharmesh在你的情况下,
newDictionary = dict.reduce([3 : "efg"]) { r, e in var r = r; r[e.0] = e.1; return r }
请让我知道,如果你发现任何问题在使用上述语法。
Swift 5快乐编码
var tempDicData = NSMutableDictionary()
for temp in answerList {
tempDicData.setValue("your value", forKey: "your key")
}
您可以使用以下方式添加,并将Dictionary更改为NSMutableDictionary
dict["key"] = "value"