CKModifyRecordsOperation 完成块运行到早期

CKModifyRecordsOperation completion block operates to early

我用

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

完成块包含一个读取所有记录的方法(只是为了检查)。正如我所期望的那样,找不到任何记录,但仍然有 "some" 条记录。如果我在几分钟后阅读,它们就消失了。

我试过

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

以及来自 NSOperations

的 "normal" completionBlock
  [modifyRecordsOperation setCompletionBlock:^{

还是一样的结果。有谁知道我是否做错了什么 and/or 如何在删除完全发生后直接触发活动?

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

我想知道它们对 意味着什么,但不要用它来处理操作本身的结果 这可能是一个提示?

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

您会在 CloutKit Dashboard、select 20 多条记录中看到相同的内容,然后点击删除。刷新,你仍然会看到一些被删除。