CloudKit で他のオブジェクトの配列を含むオブジェクトを保存する最善の方法について混乱しています。
アイテムのさまざまなコレクションを持つ todo リスト アプリがあるとします。アイテムのコレクション全体を保存/取得するにはどうすればよいですか?
「名前」と呼ばれる文字列属性と、「項目」と呼ばれる参照リスト属性を持つコレクションのレコード タイプを使用できますか?
CloudKit が子オブジェクトからその親オブジェクトを参照する方法のため、Item の Record タイプには「コレクション」と呼ばれる参照属性が必要であることを知っています。
次のコードを使用して、アイテムのインスタンスなしでコレクションを保存することができました
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)
}
}
}
もう 1 つのオプションは、コレクションを保存するときに、Item のすべてのインスタンスをループし、それらを個別に保存することです。コレクションへの参照属性は CloudKit 側で接続を確立しますが、これはネットワーク呼び出しが多すぎるように思えます。