Jestem zdezorientowany, jak najlepiej zapisać obiekt zawierający tablicę innych obiektów w CloudKit.Zapisywanie tablicy obiektów w CloudKit
Powiedz, że mam aplikację do listy rzeczy do zrobienia, która ma różne kolekcje przedmiotów. W jaki sposób chciałbym zaoszczędzić/pobrać całą kolekcję przedmiotów?
Czy miałbym typ rekordu kolekcji, który miałby atrybut łańcuchowy o nazwie "nazwa", a następnie atrybut listy referencyjnej o nazwie "przedmioty"?
Wiem, że typ rekordu elementu musi mieć atrybut referencyjny o nazwie "kolekcja", z powodu sposobu, w jaki obiekt CloudKit odwołuje się od obiektu potomnego do obiektu nadrzędnego.
udało mi się zapisać kolekcję bez żadnych wystąpień elementu z następującego kodu
func addCollection(collection: Collection!, completion: (error: NSError!) ->()) {
if collection == nil
return
}
let collectionRecord = CKRecord(recordType: "Collection")
CollectionRecord.setObject(collection.name, forKey: "Name")
privateDB.saveRecord(collectionRecord) {
record, error in
dispatch_async(dispatch_get_main_queue()) {
completion(error: error)
}
}
}
Inną opcją jest podczas zapisywania kolekcji, do pętli wszystkich wystąpień elementu, a także zapisać te indywidualnie, ich Atrybut Odniesienia do Kolekcja nawiązywania połączenia po stronie CloudKit, ale wydaje się, że to zbyt wiele połączeń sieciowych.
W jaki sposób gwarantujesz kolejność przedmiotów w kolekcji? Obawiam się, że podczas pobierania elementów, przybyłyby w innej kolejności niż wtedy, gdy zostały zapisane ... –
Możesz dodać kolejność sortowania w następujący sposób: query.sortDescriptors = [NSSortDescriptor (key: "creationDate", rosnąco: false)] –
Tak, ale muszę zachować kolejność tablic ustawioną przez użytkownika, a nie stosować sortowania za każdym razem, gdy pobierasz tablicę. –