Was sind Dictionaries? Wie Arrays und Sets gehören sie zu den Collections (oder: Collection Types). Sie werden dazu verwendet, um Objekte nach dem Key-Value-Prinzip abzulegen. Dabei kann der Schlüssel nur einmal vorkommen.
Ein Dictionary lässt sich sehr einfach erstellen:
var capitolCities: Dictionary = ["Bayern" : "München", "Hessen" : "Wiesbaden"]
Das Bundesland ist der Schlüssel, die Landeshauptstadt der dazugehörige Wert. Zusammen bilden sie jeweils ein Schlüssel-Wert-Paar.
In Swift ist es nicht erforderlich, den Datentyp anzugeben. Denn Swift ist in der Lage, selbigen zu ermitteln (type inference); möglich wäre also auch:
var capitolCities = ["Bayern" : "München", "Hessen" : "Wiesbaden"]
Es existiert noch folgende alternative Möglichkeit der Deklaration, bei der die Datentypen für die Schlüssel und die Werte explizit angegeben werden:
var moreCapitolCities: Dictionary<String, String> = ["Schleswig-Holstein": "Kiel", "Thüringen": "Erfurt"]
Dictionaries können konstant (let
) oder variabel (var
) erzeugt werden. Sie sind dann dementsprechend unveränderbar (immutable) oder veränderbar (mutable).
Der Wert für den Schlüssel „Hessen“ könnte folgendermaßen einer Variablen zugewiesen werden:
let hessen = capitolCities["Hessen"]
Wenn dieser Code ausgeführt wird, erscheint aber eine Warnmeldung. Das hängt damit zusammen, dass Dictionaries ein Optional zurückgeben. Deswegen muss entweder das Auspacken dieses Optionals mithilfe eines Ausrufezeichens (!
) erzwungen werden (implicitly unwrapped) oder es wird if let
verwendet.
let hessen = capitolCities["Hessen"]!
print("Die Hauptstadt von Hessen ist \(hessen).")
if let bayern = capitolCities["Bayern"] {
print("Die Hauptstadt von Bayern ist \(bayern).")
}
Die Key-Value-Paare eines Dictionarys können wie folgt durchlaufen und angezeigt werden:
for key in capitolCities.keys {
print("Key: \(key) - Value: \(capitolCities[key]!)")
}
In der Konsole erscheint dann folgende Ausgabe:
Key: Hessen - Value: Wiesbaden
Key: Bayern - Value: München
Die Schlüssel und Werte des Dictionary können folgendermaßen verändert werden:
// Schlüssel und Wert hinzufügen:
capitolCities["Thüringen"] = "Erfurt"
// Schlüssel und Wert löschen:
capitolCities["Hessen"] = nil
Sollte man sich in Bayern für Augsburg als Landeshauptstadt entscheiden, könnte das Dictionary angepasst werden:
// Wert ändern
capitolCities["Bayern"] = "Augsburg"
Darüber hinaus existieren für das Verändern eines Dictionarys verschiedene Methoden:
capitolCities.updateValue("Nürnberg", forKey: "Bayern")
capitolCities.removeValue(forKey: "Thüringen")
capitolCities.removeAll(keepingCapacity: true)
Damit wird ein Wert aktualisiert, ein Wert entfernt und alle Schlüssel-Wert-Paare entfernt.