2015-01-07 17 views
8

yılında nesneleri dizisini kaydetme Ben en iyi CloudKit diğer nesneleri dizisini içeren bir nesne nasıl kaydedileceği konusunda aklım karıştı. CloudKit

Ben öğelerin farklı koleksiyonları olan bir yapılacaklar listesi uygulaması, varsayalım. Tüm öğelerden oluşan bir koleksiyonun kaydedilmesi/getirilmesi ile ilgili nasıl giderim?

ben "Ad" adında bir dize Özellik olurdu Koleksiyonu bir kayıt türü, sahip misiniz, sonra bir Referans Listesi "Öğeler" denilen Öznitelik?

Ben Item Tutanak tür nedeniyle ebeveyne çocuk nesneden nasıl CloudKit referansların, "Koleksiyon" adı verilen bir referans Özellik olması gerektiğini biliyoruz.

Ben Item tüm geçtiği döngü, aşağıdaki 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) 
     } 
    } 
} 

Diğer seçenek Bir Koleksiyon kaydediyor ile Item herhangi Örnekleri olmayan Koleksiyon kurtarmayı başardı ve aynı zamanda, bireysel olarak bu kaydetmek var onların Koleksiyona Referans Özniteliği, CloudKit tarafında bağlantı kurar, ancak bu çok fazla ağ çağrısı gibi görünüyor.

cevap

2

Item kayıtlarınız için CKReference numaralı Collection'a ihtiyacınız vardır. Daha sonra bunun için bir CKReferenceAction ayarlayabileceksiniz. Collection'da CKReference listesini oluşturmanıza gerek yoktur. CKReference nesnelerin listesini sahip

iki recordTypes arasında sıkı bir ilişki olmadığı anlamına gelir Hangi CKReferenceAction.None kullanmayı planlıyorsanız tek bir seçenektir

Bir Collection nesne varsa, o zaman kolayca yapabilirsiniz Item kayıt türünü, CKReference'ın Collection sürümünün olup olmadığını kontrol eden bir yüklemi kullanarak sorgulayın.

Genellikle birden fazla kayıt kaydetmek için gerek yoktur. Bir Koleksiyon ile bir Koleksiyon oluşturduktan sonra ilişki değişmeden kalabilir. Birden çok kaydı değiştirmeniz gerekiyorsa, bir eylemde birden çok öğeyi kaydetme desteğine sahip CKModifyRecordsOperation kullanmayı deneyebilirsiniz. Bir Collection için Item recordTypes mevcut bağlarken

, bunu Collecion bir CKReference çünkü her Item kaydetmek gerekiyor. Item değişti, bu yüzden kaydedilmelidir.

+0

Koleksiyondaki eşyaların sırasını nasıl kontrol edersiniz? Ben öğeler getirilirken, onlar kaydedildi kullandığından farklı bir sırayla geleceğini korkuyorum ... –

+0

Böyle bir sıralama düzeni ekleyebilirsiniz: query.sortDescriptors = [NSSortDescriptor (anahtar: "creationDate", artan: false)] –

+0

Evet ama dizinin sırasını kullanıcı tarafından ayarlanmış halde tutmalıyım, diziyi her getirdiğimde bir sıralama uygulamam. –