An array (in Swift 4) can have any element type. With dictionary elements, we create a collection of lookup tables. We build a complex, nested data structure.
An array of dictionaries has syntax similar to a 2D array. We specify the dictionary type within an array type. The syntax might be confusing at first.
This example creates an array of String
, Int
dictionaries. It starts as an empty array. Then we add two dictionaries to it. We initialize them and append()
them to the array.
if
-statement to test whether keys exist in the nested dictionaries. The string
"cat" exists, but "diamond" does not.// This is an array of dictionaries. var dictionaries = [[String: Int]]() // Create a dictionary and add it to the array. var dictionary1: [String: Int] = ["cat": 100] dictionaries.append(dictionary1) // Create another dictionary. var dictionary2: [String: Int] = ["dog": 200] dictionaries.append(dictionary2) // Get value from dictionary in array element 0. if let value = dictionaries[0]["cat"] { print(value) } // Get value from dictionary that does not exist. if let value = dictionaries[1]["diamond"] { // This is not reached. print("Not reached") }100
Swift supports classes. Sometimes using complex nested data structures (like arrays of dictionaries) becomes more complex and harder to maintain than arrays of classes.
We use nested square brackets to create 2D arrays and arrays of dictionaries in Swift. This syntax is clear and readable, but we must type the correct number of square brackets.