How to append elements into dictionary in swift?

2019-01-13 04:42发布

问题:

I have simple Dictionary which is defined like :

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

But later I want to add some element into this dictionary which is 3 : "efg"

But I have no idea that how can I perform this action I searched a lot on internet but nothing helps me.

Can anybody tell me how can I append 3 : "efg" into this existing dictionary?

回答1:

You're using NSDictionary. Unless you explicitly need it to be that type for some reason, I recommend using a Swift dictionary.

You can pass a Swift dictionary to any function expecting NSDictionary without any extra work, because Dictionary<> and NSDictionary seamlessly bridge to each other. The advantage of the native Swift way is that the dictionary uses generic types, so if you define it with Int as the key and String as the value, you cannot mistakenly use keys and values of different types. (The compiler checks the types on your behalf.)

Based on what I see in your code, your dictionary uses Int as the key and String as the value. To create an instance and add an item at a later time you can use this code:

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

If you later need to assign it to a variable of NSDictionary type, just do an explicit cast:

let nsDict = dict as! NSDictionary

And, as mentioned earlier, if you want to pass it to a function expecting NSDictionary, pass it as-is without any cast or conversion.



回答2:

you can add using the following way and change Dictionary to NSMutableDictionary

dict["key"] = "value"


回答3:

I know this might be coming very late, but it may prove useful to someone. So for appending key value pairs to dictionaries in swift, you can use updateValue(value: , forKey: ) method as follows :

var dict = [ 1 : "abc", 2 : "cde"]
dict.updateValue("efg", forKey: 3)
print(dict)


回答4:

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)

So, your dictionary contains:

dictionary[1: Hola, 2: Hello, 3: Aloha]



回答5:

If your dictionary is Int to String you can do simply:

dict[3] = "efg"

If you mean adding elements to the value of the dictionary a possible solution:

var dict = Dictionary<String, Array<Int>>()

dict["key"]! += [1]
dict["key"]!.append(1)
dict["key"]?.append(1)


回答6:

Swift 3+

Example to assign new values to Dictionary. You need to declare it as NSMutableDictionary:

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


回答7:

In Swift, if you are using NSDictionary, you can use setValue:

dict.setValue("value", forKey: "key")


回答8:

Given two dictionaries as below:

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

Here is how you can add all the items from dic2 to dic1:

dic2.map {
   dic1[$0.0] = $0.1
}

Cheers A.



回答9:

Dict.updateValue updates value for existing key from dictionary or adds new new key-value pair if key does not exists.

Example-

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

Result-

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


回答10:

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


回答11:

Up till now the best way I have found to append data to a dictionary by using one of the higher order functions of Swift i.e. "reduce". Follow below code snippet:

newDictionary = oldDictionary.reduce(*newDictionary*) { r, e in var r = r; r[e.0] = e.1; return r }

@Dharmesh In your case, it will be,

newDictionary = dict.reduce([3 : "efg"]) { r, e in var r = r; r[e.0] = e.1; return r }

Please let me know if you find any issues in using above syntax.



回答12:

You can use another tester class to set dictionary value like

variableValue["X"] = 3.14

In above variableValue is a dictionary created by another class. You set key:value.



回答13:

if you want to modify or update NSDictionary then first of all typecast it as NSMutableDictionary

let newdictionary = NSDictionary as NSMutableDictionary

then simply use

 newdictionary.setValue(value: AnyObject?, forKey: String)