Ich entwickle gerade eine CloudKit
basierte Synchronisierungslösung und ich fragte mich, was der beste Weg ist, die Reihenfolge einer Liste (ein Array in meinem Fall) von Cloud-Objekten (CKRecord
Objekte) konsistent zu halten .Keep order of NSArray mit CloudKit
Apple rät davon ab, einen Verweis auf untergeordnete Objekte zu halten, und verweisen stattdessen einfach auf das übergeordnete Objekt mit einem CKReference
vom untergeordneten Objekt. Dies funktioniert gut, wenn Sie Ihre Artikel basierend auf einer ihrer Eigenschaften abfragen möchten (z. B. ein Erstellungsdatum), aber nicht, wenn Sie eine Bestellung haben, die vom Benutzer bestimmt wird.
Ich habe zwei verschiedene Ansätze entwickelt, die auf der gleichen Idee basieren: Verwalte ein Manifest von Bezeichnern, um die Position des Gegenstands zu verwalten.
1) Synchronisieren Sie einen zusätzlichen Datensatz (auch als Manifest bezeichnet), der über ein Array von Bezeichnern verfügt, die jeweils ein CKRecord
-Objekt (und das entsprechende lokale Modellobjekt) identifizieren.
2) Erstellen Sie ein übergeordnetes Objekt, das ein Array von Referenzen (CKReference
Objekte) zu seinen untergeordneten Objekten enthält. Dieses Array behält die angegebene Reihenfolge bei.
Ich fühle, dass dies nicht die bestmögliche Lösung für dieses Problem ist und ich würde mich freuen zu hören, was Sie denken.
Fügen Sie dem Kind ein 'Index'-Feld hinzu? – Paulw11
Dies würde erfordern ** immer ** alle Kinder aktualisieren, wenn Sie einen Listenvorgang ausführen (wie Hinzufügen oder Löschen eines Elements). – JanApotheker
@JanApotheker, nicht wirklich. 'NSArray' behält seine Reihenfolge bei, auch wenn Sie ein neues Objekt zwischen anderen Objekten einfügen, indem Sie' indexes' verwenden. –