2009-09-17 12 views
10

Wie würden Sie fortfahren, um den Inhalt eines NSSet in einem UITableView anzuzeigen?Wie wird ein NSSet in einem UITableView angezeigt?

Wie Sie wissen, fragt die Tabellenansicht nach dem Element in einer bestimmten Zeile, aber da die NSSet Elemente nicht bestellt werden, ist dies nicht gut gemischt.

Meine aktuelle Lösung ist es, durch die zu iterieren, bis ich das Element bei einem bestimmten Index erreiche, aber das fühlt sich wirklich nicht richtig an.

Sie können fragen, warum ich kein NSArray stattdessen verwende. Dies liegt daran, dass ich Core Data verwende, die NSSet s verwendet, um eine Sammlung von Elementen zu speichern.

Jede Hilfe wäre willkommen.

Antwort

28

Da Sie nur die Elemente anzeigen, warum nehmen Sie nicht die NSSet, und rufen Sie -[allObjects] darauf an, um eine NSArray zu bekommen?

Wenn sich Ihre Daten ändern, müssen Sie sie trotzdem abholen, sogar mit einer , und abgesehen von der anfänglichen Konvertierung von NSSet ist die Verwendung des Arrays ziemlich schnell.

+2

Ich fühle mich so dumm jetzt, dass ich deine Antwort gelesen habe;) –

+7

Also könnten wir sicher annehmen, dass 2 aufeinander folgende Aufrufe an "allObjects" die Elemente in der gleichen Reihenfolge zurückgibt (wenn das NSSet nicht geändert wurde)? Da die Dokumentation nur besagt, dass "die Bestellung nicht definiert ist", wird nicht erwähnt, dass die Bestellung stabil ist. Und wenn es jetzt stabil ist, bist du sicher, dass es in zukünftigen iOS-Versionen stabil bleiben wird? Ich bin mir nicht sicher, ob ich mich auf diese Funktion verlassen soll, um Elemente zu erhalten, die ich in einer Tabellenansicht anzeigen kann. –

+0

@ChristopheFondacci rufen Sie einfach 'allObjects' einmal und speichern Sie das Ergebnis in einer Variablen, bis der VC entlassen wird, oder bis der Satz erneut geändert wird. –

Verwandte Themen