假设我使用 CKModifyRecordsOperation 对象启动 saveOperation。我可以安全地假设对象的 recordsToSave 将存储在我在操作完成后执行的 modifyRecordsCompletionBlock 中访问它时在开始时给出的记录列表。
我会假设是这样,但是后来我在 Apple 文档中看到了这一行(基本上不确定“初始”是什么意思:数组的初始内容设置为您在 initWithRecordsToSave:recordIDsToDelete: 方法中指定的记录。您可以在执行操作之前根据需要修改此数组。
如果在极少数情况下它可以改变,那么我想在我的重试逻辑中采用另一种方式。
编辑添加代码
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
完成块定义为
^(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
}
}