CKModifyRecordsOperationオブジェクトを使用してsaveOperationを開始するとします。操作が完了した後に実行されるmodifyRecordsCompletionBlock内でアクセスしたときに、オブジェクトのrecordsToSaveが開始時に指定されたレコードのリストを格納することを安全に想定できますか?CKModifyRecordsOperationオブジェクトのrecordsToSaveプロパティを、そのmodifyRecordsCompletionBlockで安全に使用できるかどうかを確認します。
私はそう思うでしょうが、私はAppleのドキュメントでこの行を見ました(基本的に "初期"とは何を意味しているのかわかりません):配列の初期内容はinitWithRecordsToSaveで指定したレコードに設定されています:recordIDsToDelete:メソッドの動作を実行する前に、必要に応じて。あなたはこの配列を変更することができます。
を、それは変更することができますまれな事情がある場合は、私は私の再試行ロジックで別の道を行きたい。
EDITコード
を追加しましたCKModifyRecordsOperation *saveOperation = [[CKModifyRecordsOperation alloc] initWithRecordsToSave:recordsToSave recordIDsToDelete:nil] ;
saveOperation.modifyRecordsCompletionBlock = completionBlock ; //see completion block definition below
[self.publicDatabase addOperation:saveOperation] ;
[self.OperationQ addObject: saveOperation] ; //Saved in Q for later retrieval
completionBlockは短い号にあなたが最後に取得するレコードのリストがCloudKitが正常に更新されたものになります
^(NSArray *savedRecords, NSArray *deletedRecordIDs, NSError * operationError){
if(operationError)
{
DDLogError(@"Save of Touch event records failed with error %@",operationError) ;
//Retry, can I do this and safely assume first record retrieved here is the first record I inserted into original recordsToSave array
CKRecord *cardinalRecord = self.OperationQ[0].recordsToSave[0] ;
//Read a field from it to decide how to handle retry (e.g: retry after delay if important set of records, don't retry if not etc)..
}
else
{
//Handle success case
}
}
あなたの質問には、関連するコードが大きく役立ちます。あなたが何を求めているかを示すコードを表示する。 – rmaddy
上記の編集でいくつかのコードを追加しました。 –