Ich beginne gerade mit der Verwendung von Core Data auf dem iPhone SDK und ich versuche, eine geordnete Liste zu speichern, so etwas wie ein Array. Beziehungen in Core Data werden jedoch als Sets ausgedrückt, wenn sie abgerufen werden. Dies erschwert das Speichern der Reihenfolge, in der die Objekte positioniert werden.
Ein gutes Beispiel wären Datenelemente in der Tabellenansicht, wenn die Neuordnung von Elementen erlaubt ist. Eine einfache Lösung wäre, eine Indexeigenschaft in das verwaltete Objekt aufzunehmen.
Betrachten Sie die folgende Hierarchie:
Dokument & lt; - Viele-zu-viele- & gt; Datenelement
Verschiedene Document-Instanzen können mit demselben DataItem verknüpft werden, und jedes Dokument verweist möglicherweise auf ein oder mehrere DataItems. Daher würde eine Indexeigenschaft in DataItem zu einer geringeren Wiederverwendbarkeit dieser Instanz führen, d. H. Sie können den Index nur für eine Instanz von Document speichern.
Irgendwelche Ideen, wie ich die hierarchisch geordnete Hierarchie in einer Tabellenansicht darstellen kann, aber trotzdem jede DataItem-Instanz wiederverwenden kann? Danke!
Eine gute Lösung besteht darin, eine separate Datenstruktur in Document beizubehalten, um DataItems an einer Position in der Tabellenansicht zuzuordnen. Wenn Sie ein DataItem zu mehreren Dokumenten hinzufügen möchten, funktioniert diese Lösung nicht nur, wenn das gleiche DataItem an mehreren Positionen vorhanden ist.
Als ich mir verschiedene Strategien zur Aufbewahrung von Core Data-Objekten anschaute, fand ich einen Blogbeitrag , der erklärt wie man das sehr detailliert macht, inklusive Beispielcode.
Ab OS X Lion (10.7) ist das jetzt viel einfacher. Cocoa unterstützt jetzt eine neue NSOrderedSet Klasse kompatibel mit Core Data. Diese Funktionalität ist auch in iOS verfügbar, erfordert jedoch iOS 5.0 oder höher. Dies bedeutet, dass dies nicht verwendet werden kann, wenn Sie möchten, dass Ihre App mit früheren Versionen von iOS oder OS X abwärtskompatibel ist.
Alles, was Sie tun müssen, um eine Bestellung zu erhalten, ist das Öffnen des Core Data Model Editors, das Auswählen einer to-many Beziehung und das Aktivieren des Kontrollkästchens "ordered".
Du könntest es mit einer anderen Entität machen, so: alt text http://gallery.me.com/davedelong/100084/Screenshot-20on-202009-07-04-20at-2010-34-56-20AM/web.jpg?ver=12467253090001
Ein Dokument könnte seine tatsächlichen dataItems finden, indem es etwas wie folgt verwendet:
%Vor%Ebenso kann ein DataItem alle seine Dokumente finden, indem er dasselbe tut:
%Vor%Tags und Links objective-c cocoa-touch