Ich bin verwirrt darüber, wie ein Objekt, das ein Array anderer Objekte enthält, am besten in CloudKit gespeichert wird.
Angenommen, ich habe eine App mit der Aufgabenliste, die verschiedene Objektgruppen enthält. Wie würde ich eine ganze Sammlung von Gegenständen speichern / holen?
Wäre ich beim Record-Typ Collection, der ein String-Attribut namens "Name" und dann ein Referenzlisten-Attribut namens "Items" hätte?
Ich weiß, dass der Record-Elementtyp ein Referenzattribut namens "Collection" haben muss, weil CloudKit von einem untergeordneten Objekt auf das übergeordnete Objekt verweist.
Ich habe es geschafft, eine Sammlung ohne Instanzen von Item mit dem folgenden Code zu speichern
%Vor%Die andere Möglichkeit besteht darin, beim Speichern einer Collection alle Instanzen von Item zu durchlaufen und diese auch einzeln zu speichern, wobei das Reference Attribute to Collection die Verbindung auf der CloudKit-Seite herstellt, aber das scheint viel zu viele Netzwerkaufrufe zu sein.
Für die Item
Datensätze benötigen Sie CKReference
für Collection
. Sie können dann CKReferenceAction
darauf einstellen. Sie müssen keine CKReference
-Liste für Collection
erstellen.
Eine Liste von CKReference-Objekten ist nur dann eine Option, wenn Sie CKReferenceAction.None
verwenden möchten. Dies würde bedeuten, dass es keine strikte Beziehung zwischen den beiden recordTypes
Wenn Sie ein Objekt Collection
haben, können Sie den Item
rekordTyp einfach mit einem Prädikat abfragen, das überprüft, ob die CKReference die von Collection
ist.
Normalerweise müssen mehrere Datensätze nicht gespeichert werden. Sobald Sie eine Collection mit Items erstellt haben, kann die Relation unverändert bleiben. Wenn Sie mehrere Datensätze ändern müssen, können Sie versuchen, CKModifyRecordsOperation
zu verwenden, das mehrere Elemente in einer Aktion unterstützt.
Wenn Sie vorhandene Item
recordTypes mit einem Collection
verknüpfen, müssen Sie jedes Item
speichern, da es eine CKReference für Collecion
hat. Der Item
hat sich geändert, daher muss er gespeichert werden.
Tags und Links swift cloudkit ios8 ckreference