2016-06-01 15 views
3

の操作で複数のCKRecordオブジェクトをSwiftで保存することはできますか?私はCKFetchRecordsOperationや普通のperformQueryのようなものを使って、一度に複数のレコードを取り出す方法を知っています。私は、1回の操作で複数の新しいレコードを保存する方法がわからないことに気付いた。私がこれまで行ってきたやり方は、私にとっては非効率的です。たとえば、次のようにCloudKitとSwiftを使用して複数のCKRecordsを一度に保存する

let recordsToSave:[CKRecord]! 

for newRecord in recordsToSave { 

    if let database = self.publicDatabase { 

     database.saveRecord(newRecord, completionHandler: { (record:CKRecord?, error:NSError?) in 

      // Check if there was an error 
      if error != nil { 

       // There was an error, handle it properly. 

      } 
      else { 

       // There wasn't an error 
       if let savedRecord = record { 

        // Handle saved record accordingly. 

       } 

      } 
     }) 
} 

そして、それがすべての罰金とダンディに動作している間、それは非常に非効率的だかのように、それは私には思えます。ループを介して毎回データベース呼び出しを行う代わりに、CKRecordsの配列全体を保存するための特定の関数を呼び出す方が理にかなっていると思います。

に最もよく私が言うことができるように
let recordsToSave:[CKRecord]! 

if let database = self.publicDatabase { 

    // SOMETHING HERE LIKE database.saveRECORDS (plural) ???? 
    database.saveRecords(recordsToSave, completionHandler: { (records:[CKRecord]?, error:NSError?) in 

     // Check if there was an error 
     if error != nil { 

      // There was an error, handle it properly. 

     } 
     else { 

       // There wasn't an error 
       if let savedRecords = records { 


       } 

      } 
     }) 
} 

、そして私が得た情報に基づいて:基本的にここで私は私が行うことができますを望んでいるものです。 database.saveRecords(複数)のような実際の機能はありません。私が何かを見逃していない限り?私はそのようにカットされて乾燥していないと、名前が異なると思っているが、私はそれに似ている必要があると仮定します。

私はループを通過するたびにデータベースを呼び出さなければならないので、ひどく非効率的です。

CloudKitを使用して、一度に複数のCKRecordsの保存を実行する方法を知っている人はいますか?どんな助けでも大歓迎です。前もって感謝します!

答えて

7

ループでsaveRecordを使用するのは非常に効率が悪いです。実際にはCKDatabaseのすべての便利なメソッドを避け、適切な操作を使用するのが最善です。

1つ以上のレコードを追加/変更/削除するには、CKModifyRecordsOperationを使用してください。 1回の操作で任意の数のレコードを追加/変更したり、削除したりすることができます。これは、saveRecordを使うよりもはるかに効率的です。

CloudKit Framework Referenceを参照して、使用可能な操作の完全なリストを参照することをお勧めします。

+1

これはまさに私が探していたものです!私は 'CKModifyRecordsOperation'を使って複数のレコードを保存することができたことを忘れてしまいました。ありがとう! – Pierce

関連する問題