首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >recordsToSave对象的CKModifyRecordsOperation属性能在其modifyRecordsCompletionBlock中安全使用吗?

recordsToSave对象的CKModifyRecordsOperation属性能在其modifyRecordsCompletionBlock中安全使用吗?
EN

Stack Overflow用户
提问于 2016-03-22 21:34:47
回答 2查看 325关注 0票数 0

假设我使用一个saveOperation对象启动一个CKModifyRecordsOperation。我是否可以安全地假设对象的recordsToSave将存储在操作完成后执行的modifyRecordsCompletionBlock中访问它时给出的记录列表。

我假设是这样的,但是我在Apple中看到了这一行(基本上不确定它们所谓的“初始”指的是什么:数组的初始内容被设置为您在initWithRecordsToSave:recordIDsToDelete:方法中指定的记录。在执行操作之前,您可以根据需要修改这个数组。

如果有罕见的情况下,它可以改变,那么我想采取另一种方式,在我的重试逻辑。

编辑添加的代码

代码语言:javascript
复制
   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被定义为

代码语言:javascript
复制
  ^(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
 }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-23 16:45:46

根据添加到问题中的代码,您似乎希望检索最初传递给修改操作的记录数组。

访问self.OperationQ[0].recordsToSave肯定会使您返回传入[[CKModifyRecordsOperation alloc] initWithRecordsToSave:recordsToSave recordIDsToDelete:nil]的相同数组。

您从苹果文档中引用的消息仅仅意味着,如果您的代码更新了recordsToSave的内容,那么在调用addOperation:之前进行这些更改是安全的。

操作永远不会改变那个数组。因此,如果您不更改它,那么在完成块中访问它将返回您最初传入的内容。

票数 1
EN

Stack Overflow用户

发布于 2016-03-23 05:13:10

总之,不要。最后得到的记录列表将是CloudKit成功更新的记录。有可能它无法更新一个或多个,在这种情况下,您需要采取适当的行动。

仔细看一下苹果文档页面Keys

其中详细说明了需要考虑的场景类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36165682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档