【发布时间】:2014-07-30 00:19:37
【问题描述】:
我有一个后台进程,使用 Restkit 从后端服务器接收和应用对核心数据实体的更改,该进程运行良好。所有实体都有一个版本号属性,该属性会在后端接受更改并发布新版本时更新。如果用户正在查看的实体发生更改,我需要使用最新版本信息更新视图。
只要版本号是最后一个属性,使用 KVO 观察当前实体的版本号并在视图发生更改时刷新视图就非常有效。
也就是说,“列顺序”很重要,属性更新是原子的。如果版本号是最后一个属性,那么当调用观察者时,所有实体属性的所有更改都将被应用。
如果版本号不是定义的最后一个属性,那么当调用观察者时,版本之后属性的更新值将不会被应用。
解决方案是更改数据库并确保版本号始终在最后。这行得通,但是我在文档中找不到任何内容表明可以保证属性更改的顺序。
我假设获得防水的非原子通知的唯一方法是注册托管对象上下文更改通知,然后处理这些通知以查找感兴趣对象的更改。我对此的担心是它没有细粒度,并且会有很多不必要的处理来找到相对较少的感兴趣的东西。
这是正确的还是有办法在使用 KVO 时确保对象的非原子视图?
【问题讨论】:
标签: core-data restkit key-value-observing