Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
Controller ohne Array

Hat man im Programmcode ein direktes Outlet an einen NSArrayController gebunden, ist es in machen Fällen gar nicht mehr notwendig, diesen mit einem Array zu verbinden. Man kann sogar komplett auf das ein Array verzichten, indem man die Objekte direkt dem Controller hinzufügt.

Die Anweisung
[racesArray addObject: [[Race alloc] initWithName:@"Mensch"] ];
kann ersetzt werden durch
[myRacesController addObject: [[Race alloc] initWithName:@"Mensch"] ];
und um alle Objekte aus dem Array zu entfernen, ist der Aufruf auch nicht mehr
[racesArray removeAllObjects];
sondern
[[myRacesController content] removeAllObjects];
oder, in einer etwas anderen Schreibweise, die mit den Indexpositionen arbeitet und bei der zuvor die Anzahl der Objekte ermittelt werden muss:
[myRacesController removeObjectsAtArrangedObjectIndexes:
[NSIndexSet indexSetWithIndexesInRange:
NSMakeRange(
0, [[myRacesController arrangedObjects] count])]];
Ob man ein Array bindet oder direkt nur mit einem ArrayController arbeitet, ist immer von der Aufgabe abhängig. Der NSArrayController hat gegenüber einem Array natürlich einige Vorteile. Zum Beispiel hat er die Eigenschaft selectedObjects oder selectionIndex, mit dem die ausgewählten Objekte ermittelt werden können. Da es in einem Array diese Möglichkeiten naturgemäß nicht gibt, fehlen dort diese Eigenschaften. Im Zusammenspiel mit einer grafischen Benutzeroberfläche sind sie aber sehr nützlich, und machmal auch zwingend notwendig, wie Sie auf der nächsten Seite erfahren werden.

nächste Seite