Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
NSArray

Objekte der Klasse NSArray haben die Fähigkeit, eine Reihe von anderen Objekte aufzunehmen und diese dann gemeinsam zu verwalten. Die Betonung liegt dabei auf „Objekte“, denn da ein Array lediglich mit Verweisen arbeitet, funktioniert es nicht mit primitiven Datentypen wie int oder float.
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 die Initialisierung der Auflistung beendet wird. Dieser Wert ist zwingend notwendig, da mit ihm das Ende der Liste signalisiert wird.

Außer der Initialisierung mit arrayWithObjects kommen im Programm zwei weitere Methoden der Klasse NSArray zum Einsatz. Die Methode count, mit der die Anzahl der Objekte im Array ermittelt wird und die Methode objectAtIndex, welche ein Objekt an einer bestimmten Position im Array zurückgibt.
Da alle Objekte, die dem Array hinzugefügt werden, vom Typ NSString sind, ist es unproblematisch, sie direkt mit NSLog auszugeben.
stacks_image_4F53654E-C927-4751-AEE8-86A2B30714E4
Ein NSArray ist, wie alle Auflistungen in Objektive-C, Null-indexiert. Das erste Objekt der 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 über die Position mit count -1 ansprechen. Hier ist immer ein wenig Aufmerksamkeit des Entwicklers nötig, denn versucht man eine Position anzusprechen, bei der kein Objektverweis hinterlegt wurde, wird das zur Laufzeit mit einer „index beyond bounds“ Fehlermeldung beantwortet. Sie ist ein eindeutiger Hinweis darauf, dass man sich außerhalb des zur Verfügung stehenden Bereiches befindet und ein Zugriff nicht funktioniert, da sich an der angegebenen Position kein Objekt befindet.
// Diese Anweisung ergibt eine Fehlermeldung, da es diese Position
// im Array nicht gibt.
NSLog(@"Index %d ist %@", 5, [myArray objectAtIndex:5]);
stacks_image_A6A4B464-4EE3-44B3-A4DC-BC4D711C91D2