dweb
dweb

Reputation: 161

appending key value pair to existing dictionary values in swift

I'm trying achieve below results. Where I can save multiple key values for multiple string items.

//dict["Setting1"] = ["key1":"val1"]
//dict["Setting1"] = ["key2":"val2"]
//dict["Setting2"] = ["key1":"val1"]
//dict["Setting2"] = ["key2":"val2"]
// and so on..
//or
//dict["Setting1"].append(["key2":"val2"]) // this doesn't work

//accessing dict["Settings1"]["key1"]    ..should give me val1

var dict = [String:[String:String]]()

var lst1 = ["key2":"val2"]
dict["one"] = ["key1":"val1"]

dict["one"]?.append(lst1)

print(dict)

gives me error

error: value of type '[String : String]' has no member 'append'
obj["one"]?.append(lst1)
~~~~~~~~~~~ ^~~~~~

Upvotes: 0

Views: 324

Answers (1)

Will
Will

Reputation: 5490

You're using a Dictionary which doesn't have methods like append(_:). append(:_) adds something to the end of an Array, but Dictionaries are unordered.

To add something to a Dictionary, you first define a key for it, and then assign it a value in the Dictionary

It'll look like this:

var dict = [String :[String: String]]()
var lst1 = ["key2": "val2"]
dict["one"] = ["key1": "val1"]

But you can't append to dict["one"], because it's not an array, you can only overwrite it

dict["one"] = lst1

Upvotes: 1

Related Questions