如何检测何时完成所有controllerDidChangeContent方法
问题描述:
我正在使用NSfetchedResultsController。如何检测何时完成所有controllerDidChangeContent方法
当所有controllerDidChangeContent
方法完成后,我需要将更新发送到CloudKit。 在我的案例中,controllerDidChangeContent
方法被调用了好几次,因为我从CloudKit接收到了我的tableView中的每条记录的更新,因此如果我在controllerDidChangeContent
中调用了cloudKit更新,则会调用它来更新每行。这是坏的。
是否有可能检测到controllerDidChangeContent何时完成所有更新并将我的CloudKit发送消息放入内部?
或者也许有另一种方法呢?
答
没有好的方法来确定所有更新何时完成,因为没有对“所有更新”进行有意义的定义。您可以随时进行新的更新,因此可以随时为获取的结果控制器准备新的更新。
时看到更新对象的具体名单已经完成,你也许可以做到像
- 使对象ID的列表,你将更新
- 每次读取的结果控制器接收更新,从列表中删除受影响的对象的对象ID。
- 当列表为空时,您已完成该组更新。
对于更通用的解决方案,只有在几秒钟内没有收到新更新时,才可以使用NSTimer
触发更新。步骤如下:
- 在您的
controllerDidChangeContent
中,检查计时器是否存在。如果没有,请创建一个。 - 将计时器的
fireDate
设置为将来5秒(或无论你想要多少)。
每当您进行更新时,您都会一直延迟计时器5秒。如果5秒钟没有更新通过,计时器将会启动。
谢谢你的解释汤姆! – Adelmaer