我用
删除了recordZone中的所有记录 CKModifyRecordsOperation *modifyRecordsOperation = [[CKModifyRecordsOperation alloc] initWithRecordsToSave:nil recordIDsToDelete:[arrayWithRecordIdsMutable copy]];
completionblock包含一个读取所有记录的方法(只是为了检查)。正如我所料,没有找到任何记录,相反仍有“一些”记录。如果我几分钟后读完,他们就不见了。
我试过
modifyRecordsOperation.modifyRecordsCompletionBlock = ^(NSArray *records, NSArray *deletedRecordIDs, NSError *error) {
以及来自NSOperations的“正常”完成块
[modifyRecordsOperation setCompletionBlock:^{
仍然是相同的结果。有没有人有一个想法,我是否做错了什么和/或如何在删除完全发生后直接触发活动?
Apple文档说: 如果将完成块分配给操作对象的completionBlock属性,则在操作执行后调用完成块并将结果返回给您。您可以使用完成块来执行与操作相关的内务处理,但不要使用它来处理操作本身的结果。您指定的任何完成块都应准备好处理操作失败以完成其任务,无论是由于错误还是显式取消。
我想知道它们对的意义,但不要用它来处理操作本身的结果 可能这是一个暗示吗?
答案 0 :(得分:1)
我认为发生的事情是所有记录都被标记为已删除,但最终会被批量删除。我建议删除你不需要加速的索引。此外,开发环境比生产中的批次慢。
您会在CloutKit Dashboard
中看到相同内容,选择20条以上的记录并点击删除。刷新,你仍然会看到一些被删除。