7. Arrays
7.1 Ein Array erstellen
Die Bildung eines Arrays erinnert im Grunde an die
einer Variabel. Auch hier schreiben wir „var“ und im Anschluss den gewünschten Namen.
In unserem Beispiel kreieren wir uns ein Array, welches des Datentyps String
ist und jeweils einzelne Produkte eines Warenkorbs abspeichert. Daher wählen
wir den Namen „warenkorb“. Wenn wir ein Array erstellen, haben wir zwei
Möglichkeiten, wie wir vorgehen können. Wir können einerseits ein leeres Array
bilden, welches keinerlei Daten enthält, oder wir speichern schon beim
Erstellen Daten ab. Das kommt jedoch immer auf den Anwendungszweck an. In
unserem Beispiel ist der Warenkorb von Anfang an leer, daher schreiben wir nach
dem Gleichheitszeichen den Datentyp in eckige Klammern und schließen mit runden
Klammern ab.
var warenkorb = [String]()
Sollten wir jedoch schon wissen, dass der Kunde mit Sicherheit Milch und Butter braucht, können wir diese auch schon von Beginn an in das Array abspeichern. Hier unterscheidet sich die Bildung insofern, dass die eckigen Klammern mit dem Datentyp nicht nach dem Gleichheitszeichen, sondern davor stehen und die Werte nach dem Gleichheitszeichen in eckige Klammern geschrieben und mit Kommas abgetrennt werden.
var warenkorb: [String] = ["Milch", "Butter"]
7.2 Werte einem Array hinzufügen und entfernen
Nun haben wir zwar einen Warenkorb mit Milch und Butter, doch der Kunde muss seinen Einkauf ja irgendwie auch erweitern können. Dafür gibt es in Swift Methoden, die das für uns übernehmen. Wir müssen sie lediglich aufrufen.
Die Methode um Werte anzufügen nennt sich „append“. Sie fügt einen Wert ans Ende des Arrays an. Um sie aufzurufen schreiben wir den Namen des Arrays, anschließen einen Punkt. Dabei sollten uns schon einige Methoden vorgeschlagen werden, unteranderem auch „append“.
warenkorb.append("Eier")
warenkorb.append("Mehl")
Diese Methode hat leider einen Hacken. Sie kann einen Wert nur anfügen aber nicht hinzufügen. Das heißt, der Wert wird zwingend an letzter Stelle angefügt. In manchen Situationen wollen wird jedoch, dass ein Wert an erster, oder zweiter Stelle hinzugefügt wird. Dafür hat Swift ein zweite Methode, die sich „insert“ nennt. Mit ihr haben wir die Möglichkeit den Wert an eine bestimmte Stelle zu speichern.
Dafür müssen wir uns jedoch genauer mit den Arrays befassen, denn ein Array hat für jeden Wert einen Index, der die Stelle beschreibt, an der der Wert sitzt. Dabei ist die erste Stelle nicht der Index 1, sondern der Index 0. Dies mag zu Beginn etwas verwirrend erscheinen, wird sich aber mit der Zeit in euch festbrennen. Das heißt, die fünfte Stelle ist Index 4, die zwölfte Stelle ist Index 11 usw.
Wenn wir also die Methode „insert“ aufrufen, müssen wir den gewünschten Index mitgeben. In unserem Beispiel habe wird dem Warenkorb Brot an der dritten Stelle (Index 2) hinzugefügt.
warenkorb.insert("Brot", at: 2)
Um mal zu sehen, wie viele Werte in unserem Array gespeichert sind, können wir die Methode „count“ aufrufen. Sie gibt uns immer den momentanen Stand zurück. Damit uns die Anzahl in der Konsole ausgegeben wird, rufen wir sie im „print“ auf.
print(warenkorb.count)
Wie dir vermutlich aufgefallen ist, wird uns fünf ausgegeben. Jetzt hat der Kunde aber gemerkt, dass er nicht so viel Geld dabei hat und möchte gerne das letzte Lebensmittel zurückgeben. Die entsprechende Methode dafür nennt sich „removeLast“. Sie entfernt uns den Wert, der an letzter Stelle im Array steht. Das ist in diesem Fall das Mehl.
warenkorb.removeLast()
Als nächsten Merkt der Kunde, dass er auch keine Milch braucht. Da die Milch an erster Stelle des Arrays steht, können wir die Methode „removeFirst“ aufrufen.
warenkorb.removeFirst()
Nun bleiben uns noch die Butter, das Brot und die Eier. Sollte der Kunde merken, dass er doch kein Brot mehr braucht, müssen wir den entsprechenden Index mitgeben.
warenkorb.remove(at: 1)
Solltest du den Idex des zu entfernenden Wertes nicht kennen, kannst du die .index(of: ) Methode zur Hilfe nehmen. Um den Index herauszufinden, gibst du ihr als Parameter den Wert mit.
warenkorb.remove(at: warenkorb.index(of: "Mehl"))
Wir können nicht nur einzelne Werte
entfernen oder ersetzen, sondern auch ganze Spannen. Der Warenkorb enthält noch
Butter und Eier, welche plötzlich durch Wasser und Bananen ersetzt werden
müssen. Hier geben wir die Spanne an, die ersetzt werden muss und die Werte,
die anstelle treten sollen. Die Spanne wird vom einen Index mit drei Punkten
zum andern Index angegeben.
warenkorb[0...1] = ["Wasser", "Bananen"]
Da der Kunde ziemlich unentschlossen wirkt, gehen wir mal auf Nummer sicher und gehen davon aus, dass er möglicherweise nichts kaufen möchte. Um den gesamten Warenkorb zu entfernen, gibt es die Methode „removeAll“.
warenkorb.removeAll()
Um zu prüfen, ob der Warenkorb tatsächlich leer ist, könne wir eine simple Kontrollstruktur bilden. Dafür verwenden wir eine Methode, die sich „isEmpty“ nennt.
if warenkorb.isEmpty{
print("Der Warenkorb ist leer")
}else{
print("Der Warenkorb enthält Produkte")
}