Attualmente sto progettando una soluzione di sincronizzazione basata su CloudKit
e mi sono chiesto quale sia il modo migliore per mantenere coerente l'ordine di un elenco (un array nel mio caso) di elementi cloud (oggetti CKRecord
) .Mantieni ordine di NSArray con CloudKit
Apple sconsiglia di conservare un riferimento a oggetti figlio e fa semplicemente riferimento all'oggetto padre con un CKReference
dal figlio. Funziona bene se vuoi interrogare i tuoi articoli sulla base di una delle sue proprietà (ad esempio una data di creazione), ma non se hai un ordine che è determinato dall'utente.
Sono arrivato a due approcci diversi basati sulla stessa idea: mantenere un manifest di identificatori per gestire la posizione dell'oggetto.
1) Sincronizzare un record aggiuntivo (noto anche come manifest) con una matrice di identificativi, ognuno dei quali identifica un oggetto CKRecord
(e l'oggetto modello locale corrispondente).
2) Creare un oggetto padre che contiene una matrice di riferimenti (oggetti CKReference
) agli oggetti figlio di esso. Questo array mantiene l'ordine dato.
Ritengo che questa non sia la migliore soluzione possibile a questo problema e sarei lieto di sapere cosa ne pensate.
Aggiungi un campo 'indice' al bambino? – Paulw11
Ciò richiederebbe ** sempre ** aggiornare tutti i child quando si esegue un'operazione di lista (come aggiungere o eliminare un elemento). – JanApotheker
@JanApotheker, non proprio. 'NSArray' mantiene il suo ordine anche se si inserisce un nuovo oggetto tra altri oggetti usando' indexes'. –