Swift dictionary is an unordered collection of items. It stores elements in key/value pairs. Here, keys are unique identifiers that are associated with each value.
Sets are unordered collections of unique values. Dictionaries are unordered collections of key-value associations. Arrays, sets, and dictionaries in Swift are always clear about the types of values and keys that they can store. This means that you can't insert a value of the wrong type into a collection by mistake.
You can use a set instead of an array when the order of items is not important, or when you need to ensure that an item only appears once. A dictionary stores associations between keys of the same type and values of the same type in a collection with no defined ordering.
Swift – Check if Specific Key is Present in Dictionary To check if a specific key is present in a Swift dictionary, check if the corresponding value is nil or not. If myDictionary[key] != nil returns true, the key is present in this dictionary, else the key is not there.
var emptyDictionary = [String: String]()
var populatedDictionary = ["key1": "value1", "key2": "value2"]
Note: if you're planning to change the contents of the dictionary over time then declare it as a variable (var
). You can declare an empty dictionary as a constant (let
) but it would be pointless if you have the intention of changing it because constant values can't be changed after initialization.
You can't use [:]
unless type information is available.
You need to provide it explicitly in this case:
var dict = Dictionary<String, String>()
var
means it's mutable, so you can add entries to it.
Conversely, if you make it a let
then you cannot further modify it (let
means constant).
You can use the [:]
shorthand notation if the type information can be inferred, for instance
var dict = ["key": "value"]
// stuff
dict = [:] // ok, I'm done with it
In the last example the dictionary is known to have a type Dictionary<String, String>
by the first line. Note that you didn't have to specify it explicitly, but it has been inferred.
The Swift documentation recommends the following way to initialize an empty Dictionary:
var emptyDict = [String: String]()
I was a little confused when I first came across this question because different answers showed different ways to initialize an empty Dictionary. It turns out that there are actually a lot of ways you can do it, though some are a little redundant or overly verbose given Swift's ability to infer the type.
var emptyDict = [String: String]()
var emptyDict = Dictionary<String, String>()
var emptyDict: [String: String] = [:]
var emptyDict: [String: String] = [String: String]()
var emptyDict: [String: String] = Dictionary<String, String>()
var emptyDict: Dictionary = [String: String]()
var emptyDict: Dictionary = Dictionary<String, String>()
var emptyDict: Dictionary<String, String> = [:]
var emptyDict: Dictionary<String, String> = [String: String]()
var emptyDict: Dictionary<String, String> = Dictionary<String, String>()
After you have an empty Dictionary you can add a key-value pair like this:
emptyDict["some key"] = "some value"
If you want to empty your dictionary again, you can do the following:
emptyDict = [:]
The types are still <String, String>
because that is how it was initialized.
Use this will work.
var emptyDict = [String: String]()
You can simply declare it like this:
var emptyDict:NSMutableDictionary = [:]
You have to give the dictionary a type
// empty dict with Ints as keys and Strings as values
var namesOfIntegers = Dictionary<Int, String>()
If the compiler can infer the type, you can use the shorter syntax
namesOfIntegers[16] = "sixteen"
// namesOfIntegers now contains 1 key-value pair
namesOfIntegers = [:]
// namesOfIntegers is once again an empty dictionary of type Int, String
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With