Frage

Ich habe erkannt, gibt es zwei Möglichkeiten, um eine NSArrayController zu verwenden.

Binden Sie den Controller und Array und fügen Sie Objekte in das Array. Oder verwenden Sie keine Array überhaupt, und fügen Sie Objekte direkt an den Controller.

[racesArray addObject: [[Race alloc] initWithName:@"Human"] ];

oder

[myRacesController addObject: [[Race alloc] initWithName:@"Human"] ];

Da sowohl Version funktioniert für meine Bedürfnisse Ich frage mich, was ist der richtige Weg, es zu benutzen. Ich denke, mit einem Array besser sein könnte, aber da die NSArrayController ist auch in der Lage, Daten speichern, warum soll ich diese Funktion nicht verwenden?

War es hilfreich?

Lösung

Sie auf das Array nicht direkt sprechen, wie Sie in Ihrem ersten Beispiel tun. Die Array-Controller werden nicht über Änderungen erfahren, wenn Sie nicht ausdrücklich KVO Benachrichtigungen über sie schreiben, was für einen Aufwand ist und ist einfach zu tun, um zu vergessen.

So wie ich empfehlen ist die Array-Controller zu binden, implementieren und dann die

Andere Tipps

Beide Wege sind in Ordnung. Wenn Sie es nicht ein Array geben, NSArrayController behält seine eigene.

Die NSArrayController ist KVO-konform für mit UI-Elemente binden. Es hat auch zusätzliche Metadaten für eine Reihe von Objekten wie SelectedObject. Diese Bequemlichkeit Objekte sind nicht mit NSArray. NSArray ist nur ein Array mit den regulären Array Operatoren und Methoden auf sie festgelegt. Verwenden Sie es, wenn Sie nicht mit UI-Elemente binden müssen.

scroll top