Collections help you store and organize many pieces of data in one place. They make it easy to find, add, or change data.
Collections (Array, Dictionary, Set) in iOS Swift
var array: [Type] = [value1, value2, ...]
var dictionary: [KeyType: ValueType] = [key1: value1, key2: value2, ...]
var set: Set<Type> = [value1, value2, ...]Arrays keep items in order and allow duplicates.
Dictionaries store key-value pairs for fast lookup by key.
Sets store unique items without order.
var fruits: [String] = ["Apple", "Banana", "Cherry"]
var phoneBook: [String: String] = ["Alice": "123-4567", "Bob": "987-6543"]
var uniqueNumbers: Set<Int> = [1, 2, 3, 3]
var emptyArray: [Int] = [] var emptyDictionary: [String: Int] = [:] var emptySet = Set<String>()
This SwiftUI app shows three collections: an array of fruits, a dictionary of phone numbers, and a set of unique numbers. It displays each collection's items in a list.
import SwiftUI struct ContentView: View { @State private var fruits: [String] = ["Apple", "Banana", "Cherry"] @State private var phoneBook: [String: String] = ["Alice": "123-4567", "Bob": "987-6543"] @State private var uniqueNumbers: Set<Int> = [1, 2, 3, 3] var body: some View { VStack(alignment: .leading, spacing: 20) { Text("Fruits Array:") .font(.headline) ForEach(fruits, id: \.self) { fruit in Text(fruit) } Text("Phone Book Dictionary:") .font(.headline) ForEach(phoneBook.sorted(by: { $0.key < $1.key }), id: \.key) { name, number in Text("\(name): \(number)") } Text("Unique Numbers Set:") .font(.headline) ForEach(Array(uniqueNumbers).sorted(), id: \.self) { number in Text(String(number)) } } .padding() } } @main struct CollectionsApp: App { var body: some Scene { WindowGroup { ContentView() } } }
Arrays keep the order of items and allow duplicates.
Dictionaries let you find values quickly using keys.
Sets store only unique items and do not keep order.
Use arrays when order matters, dictionaries when you need key-value pairs, and sets when you want unique items.
Arrays, dictionaries, and sets are basic ways to store groups of data.
Arrays keep order and allow duplicates.
Dictionaries store data as key-value pairs for fast lookup.
Sets store unique items without order.
Practice
Solution
Step 1: Understand collection types
Arrays keep the order of elements and allow duplicates, dictionaries store key-value pairs, and sets store unique unordered items.Step 2: Match collection behavior
Since the question asks for ordered and duplicate-allowed collection, Array fits this description.Final Answer:
Array -> Option AQuick Check:
Ordered + duplicates = Array [OK]
- Confusing sets with arrays because both store multiple items
- Thinking dictionaries keep order like arrays
- Assuming tuples are collections like arrays
Solution
Step 1: Identify dictionary syntax
In Swift, dictionaries are declared with key and value types inside square brackets separated by a colon, e.g., [KeyType: ValueType]().Step 2: Check options
var dict = [String: Int]() uses [String: Int]() which is correct for an empty dictionary with String keys and Int values. Others are array or set declarations.Final Answer:
var dict = [String: Int]() -> Option CQuick Check:
Dictionary syntax = [Key: Value]() [OK]
- Using [Int]() which is an array, not dictionary
- Confusing sets with dictionaries
- Missing colon between key and value types
let fruits: Set<String> = ["apple", "banana", "apple", "orange"] print(fruits.count)
Solution
Step 1: Understand Set behavior
Sets store unique elements only, so duplicates are removed automatically.Step 2: Count unique fruits
The array has "apple" twice, so unique items are "apple", "banana", "orange" which is 3.Final Answer:
3 -> Option DQuick Check:
Set removes duplicates, count = 3 [OK]
- Counting duplicates as separate items
- Thinking sets keep order and duplicates
- Expecting a runtime error for duplicates
var capitals = ["France": "Paris", "Japan": "Tokyo"] capitals["France"] = "Lyon" capitals["Germany"] = "Berlin" print(capitals["Germany"])
Solution
Step 1: Check dictionary mutation rules
Dictionaries in Swift are mutable if declared with var, so you can update existing keys and add new ones.Step 2: Analyze code behavior
Updating "France" to "Lyon" and adding "Germany" with "Berlin" is valid. Printing capitals["Germany"] returns Optional("Berlin") because dictionary lookup returns an optional.Final Answer:
No error, code runs and prints Optional("Berlin") -> Option BQuick Check:
Mutable dictionary updates and adds keys [OK]
- Thinking dictionaries are immutable by default
- Expecting print to show value without Optional
- Believing keys must be Int type
let names = ["Anna", "Bob", "Anna", "Cara"]
var counts = [String: Int]()
for name in names {
counts[name, default: 0] += 1
}
print(counts)Solution
Step 1: Understand dictionary default value usage
The syntax counts[name, default: 0] returns the current value for key or 0 if key is missing, allowing safe increment.Step 2: Count occurrences in array
"Anna" appears twice, "Bob" and "Cara" once each, so counts dictionary will have Anna: 2, Bob: 1, Cara: 1.Final Answer:
["Anna": 2, "Bob": 1, "Cara": 1] -> Option AQuick Check:
Counting duplicates with default 0 increments [OK]
- Expecting syntax error from default value usage
- Counting duplicates as 1 only
- Confusing dictionary keys and values
Ready to prove it?
Pass the test and this pattern moves unknown
