NSArray
NSArray ist eine Cocoa-Klasse mit der Fähigkeit eine Reihe von anderen Objekte aufzunehmen und gemeinsam zu verwalten. Die Betonung liegt dabei auf „Objekte“, denn primitive Datentypen wie int oder float können von einem NSArray nicht aufgenommen werden. Bei Objekten sind hingegen alle Typen möglich.
Der folgende Code zeigt ein NSArray mit Objekten vom Typ NSString. Das Objekt wird deklariert, mit Objekten gefüllt und in einer Schleife ausgegeben.
NSArray ist eine Cocoa-Klasse mit der Fähigkeit eine Reihe von anderen Objekte aufzunehmen und gemeinsam zu verwalten. Die Betonung liegt dabei auf „Objekte“, denn primitive Datentypen wie int oder float können von einem NSArray nicht aufgenommen werden. Bei Objekten sind hingegen alle Typen möglich.
Der folgende Code zeigt ein NSArray mit Objekten vom Typ NSString. Das Objekt wird deklariert, mit Objekten gefüllt und in einer Schleife ausgegeben.
| NSArray
*myArray; myArray = [NSArray arrayWithObjects:@"Alpha",@"Beta",@"Gamma",nil]; for(int i = 0; i < [myArray count]; i++) { NSLog(@"Index %d ist %@", i, [myArray objectAtIndex:i]); } |
Besonders wichtig in diesem Beispiel ist der Wert nil, mit dem Auflistung beendet wird. Dieser Wert ist zwingend notwendig, was ebenfalls zur Folge hat, dass ein Array keinen nil-Wert speichern kann. Dieser würde immer das Ende des Arrays signalisieren.
Zwei Methoden von NSArray kommen hier zum Einsatz. Da ist zum ersten count, mit der die Anzahl der Objekte im Array ermittelt werden. Die zweite Methode ist objectAtIndex, die ein Objekt an einer bestimmten Position im array zurückgibt. Da die Objekte alle vom Typ NSString sind, ist es unproblematisch, sie auf der Console auszugeben.
Zwei Methoden von NSArray kommen hier zum Einsatz. Da ist zum ersten count, mit der die Anzahl der Objekte im Array ermittelt werden. Die zweite Methode ist objectAtIndex, die ein Objekt an einer bestimmten Position im array zurückgibt. Da die Objekte alle vom Typ NSString sind, ist es unproblematisch, sie auf der Console auszugeben.

Ein NSArray ist, wie alle Objekte in Objektive-C, Null-Indexiert. Das erste Objekt dieser Liste ist an Position 0 und nicht an Position 1. Ebenfalls gibt die Methode count nicht die letzte Position im Array zurück, sondern die Anzahl der Objekte. Das letzte Objekt in einem Array lässt sich für gewöhnlich mit count -1 finden. Daher ist ein wenig Aufmerksamkeit des Entwicklers nötig.
Es ist immer eine schlechte Idee, Objekte in einem Array anzusprechen, die nicht vorhanden sind. Die Indexposition bei der objectAtIndex-Methode ist zwar frei wählbar, rsucht man aber eine Position im Array, die gar nicht existiert, wird das mit einer Fehlermeldung beantwortet.
Es ist immer eine schlechte Idee, Objekte in einem Array anzusprechen, die nicht vorhanden sind. Die Indexposition bei der objectAtIndex-Methode ist zwar frei wählbar, rsucht man aber eine Position im Array, die gar nicht existiert, wird das mit einer Fehlermeldung beantwortet.
| //
Diese Anweisung gibt eine Fehlermeldung da es diese Position // im Array nicht gibt. NSLog(@"Index %d ist %@", 5, [myArray objectAtIndex:5]); |

Die Meldung „beyond bounds“ ist ein eindeutiger Hinweis darauf, dass man sich ausserhalb des zur Verfügung stehenden Bereiches befindet und ein Zugriff hier nicht funktioniert, da an dieser Position kein Objekt ist.
nächste Seite
nächste Seite