Dictionaries in Swift are like arrays in special characteristics, such as mutable and strongly typed. Dictionary is mutable by default, except if used with let
. Also keys and values should be of the same type.
The dictionary type is inferred by the initial values, or you can explicitly write it using the square brackets [keyType, valueType]
.
To initialize a dictionary, you have two options. The first option is to create an empty one with no data. You can create it like this:
var dic1 = [String:Int]() // 0 key/value pairs
As we see in this case, we had to explicitly write the type of keys and values.
In the second option, you have the predefined values like this:
var dic2 = ["EN" : "English", "FR" : "French"] //["EN": "English", "FR": "French"]
Here we didn't write the type of keys or the values, as it was inferred from the initial values.
Updating or appending a value with a key in a dictionary is very similar, and can be done like this:
dic2["AR"] = "Arabic" //Add dic2["EN"] = "ENGLISH" //update //["EN": "ENGLISH", "FR": "French", "AR": "Arabic"]
As you can see, in the first line it will create a new record in the dictionary, because the "AR"
key did not exist before. In the second line as the "EN"
key exists, it will update each of its values with the given one. Very simple right!
Another method to update a value for the key in the dictionary is to call updateValue(val, forKey:)
. Take a look at the following example:
dic2.updateValue("ARABIC", forKey: "AR") //returns "Arabic" //dic2 now is ["EN": "ENGLISH", "FR": "French", "AR": "ARABIC"]
As you see in the code, this method returns the old value after updating the new value. So, if you want to retrieve the old value after the update function is done, this method is the best choice.
This is the same as updating values. You have two ways to remove items from dictionary. The first is to set the value of the key as nil
, and the second is to call the removeValueForKey(key)
method. This method also returns the old value before deleting it.
dic2["AR"] = nil dic2.removeValueForKey("FR") //returns French //["EN": "ENGLISH"] dic2["FR"] // Returns nil