CKModifyRecordsOperation完成块运行到早期

时间:2015-08-11 08:12:02

标签: cloudkit

我用

删除了recordZone中的所有记录
   CKModifyRecordsOperation *modifyRecordsOperation = [[CKModifyRecordsOperation alloc] initWithRecordsToSave:nil recordIDsToDelete:[arrayWithRecordIdsMutable copy]];

completionblock包含一个读取所有记录的方法(只是为了检查)。正如我所料,没有找到任何记录,相反仍有“一些”记录。如果我几分钟后读完,他们就不见了。

我试过

  modifyRecordsOperation.modifyRecordsCompletionBlock = ^(NSArray *records, NSArray *deletedRecordIDs, NSError *error) {

以及来自NSOperations的“正常”完成块

  [modifyRecordsOperation setCompletionBlock:^{

仍然是相同的结果。有没有人有一个想法,我是否做错了什么和/或如何在删除完全发生后直接触发活动?

Apple文档说: 如果将完成块分配给操作对象的completionBlock属性,则在操作执行后调用完成块并将结果返回给您。您可以使用完成块来执行与操作相关的内务处理,但不要使用它来处理操作本身的结果。您指定的任何完成块都应准备好处理操作失败以完成其任务,无论是由于错误还是显式取消。

我想知道它们对的意义,但不要用它来处理操作本身的结果 可能这是一个暗示吗?

1 个答案:

答案 0 :(得分:1)

我认为发生的事情是所有记录都被标记为已删除,但最终会被批量删除。我建议删除你不需要加速的索引。此外,开发环境比生产中的批次慢。

您会在CloutKit Dashboard中看到相同内容,选择20条以上的记录并点击删除。刷新,你仍然会看到一些被删除。