如何将元素添加到Swift的字典中?

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

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

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

如何将3 : "efg"追加到现有的字典中?

391821 次浏览

如果你的字典是IntString,你可以简单地做:

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"

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

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

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

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

如果稍后需要将其赋值给NSDictionary类型的变量,只需执行显式强制转换:

let nsDict = dict as! NSDictionary

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

在Swift中,如果你正在使用NSDictionary,你可以使用setValue:

dict.setValue("value", forKey: "key")
我知道这可能来得很晚,但它可能对某人有用。 因此,要在swift中将键值对追加到字典中,您可以使用updateValue(value:, forKey:)方法,如下所示
var dict = [ 1 : "abc", 2 : "cde"]
dict.updateValue("efg", forKey: 3)
print(dict)

给出以下两本词典:

var dic1 = ["a": 1, "c": 2]
var dic2 = ["e": 3, "f": 4]

下面是如何添加从dic2dic1的所有项:

dic2.forEach {
dic1[$0.key] = $0.value
}
如果你想修改或更新NSDictionary则

首先,将其类型转换为NSMutableDictionary

let newdictionary = NSDictionary as NSMutableDictionary

然后简单地使用

 newdictionary.setValue(value: AnyObject?, forKey: String)
var dict = ["name": "Samira", "surname": "Sami"]
// Add a new enter code herekey with a value
dict["email"] = "sample@email.com"
print(dict)

到目前为止,我发现的最好的方法是通过使用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 3 - xcode 8.1

var dictionary =  [Int:String]()


dictionary.updateValue(value: "Hola", forKey: 1)
dictionary.updateValue(value: "Hello", forKey: 2)
dictionary.updateValue(value: "Aloha", forKey: 3)

所以,你的字典包含:

字典[1:Hola, 2: Hello, 3: Aloha]

斯威夫特3 +

向Dictionary分配新值的示例。你需要声明它为NSMutableDictionary:

var myDictionary: NSMutableDictionary = [:]
let newValue = 1
myDictionary["newKey"] = newValue
print(myDictionary)

Dict.updateValue更新字典中现有键的值,或在键不存在时添加新的键-值对。

的例子,

var caseStatusParams: [String: AnyObject] = ["userId" : UserDefault.userID ]
caseStatusParams.updateValue("Hello" as AnyObject, forKey: "otherNotes")

结果- - - - - -

▿  : 2 elements
- key : "userId"
- value : 866
▿  : 2 elements
- key : "otherNotes"
- value : "Hello"

添加新元素只需设置:

listParameters["your parameter"] = value

从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)

(字符串:任何)

对于使用[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)
}
}
}

在字典中没有附加数据的函数。您只需根据现有字典中的新键分配值。它将自动向字典中添加值。

var param  = ["Name":"Aloha","user" : "Aloha 2"]
param["questions"] = "Are you mine?"
print(param)

输出是这样的

["名称":“阿罗哈”,“用户”:“阿罗哈2”,“问题”:“你是我的”吗?”)

我添加了字典扩展

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

你可以像这样使用cloneWith

 newDictionary = dict.reduce([3 : "efg"]) { r, e in r.cloneWith(e) }
For whoever reading this for swift 5.1+


// 1. Using updateValue to update the given key or add new if doesn't exist




var dictionary = [Int:String]()
dictionary.updateValue("egf", forKey: 3)






// 2. Using a dictionary[key]


var dictionary = [Int:String]()
dictionary[key] = "value"






// 3. Using subscript and mutating append for the value


var dictionary = [Int:[String]]()


dictionary[key, default: ["val"]].append("value")

Swift 5快乐编码

var tempDicData = NSMutableDictionary()


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

要将一个新的键-值对追加到字典中,您只需设置键的值。如。

// Initialize the Dictionary
var dict = ["name": "John", "surname": "Doe"]
 

// Add a new key with a value


dict["email"] = "john.doe@email.com"


print(dict)

输出→["surname": "Doe", "name": "John", "email": "john.doe@email.com"]