0

我有一个 NSManagedObject 实例,它代表我的应用程序中的用户。我保留了这个实例并在视图控制器之间传递它以供接口参考。用户实例所属的托管对象上下文 (MOC) 是主队列 MOC,它是直接保存到持久存储的私有队列 MOC 的子队列。

我的核心数据持久存储在单独的后台队列的后台更新。这些更新被保存到私有队列 MOC 中,然后提交到主私有队列 MOC 并随后保存到持久存储中。

我的问题是,如何确保用户 NSManagedObject 实例保持最新?我知道refreshObject:mergeChanges:的存在,但是,设置一个NSManagedObjectContextDidSaveNotification观察者来简单地保持对象实例是最新的似乎很复杂。当试图使多个 NSManagedObject 实例保持最新时,我可以看到这种方法变得不守规矩。

4

1 回答 1

1

根据经验,您最好的选择是不要试图使其保持最新。您需要使用实现 NSManagedObjectContextDidSaveNotification 来保持您的上下文最新的——你无法解决这个问题——但要获得一个有效的对象,你需要在每次更新后重新查询它。最简单的方法是依赖于应用程序,但我经常使用唯一的、服务器生成的 ID 来传递对象,然后在我需要使用它们时使用它们从数据库中取出它们。(唯一 ID 是必要的,因为我通常使用使用它们的 API,因此您的结果会有所不同)该技术可能起作用或可能不起作用的唯一地方是您在本地生成数据的地方,并且还没有(还) 将其上传到数据库,并在其中获得永久 ID。我通常对它们进行特殊处理,并有一个与“真实”ID 分开的设备 ID,只是为了跟踪它们,直到他们获得真实 ID。任何没有“真实”的东西

于 2013-09-30T20:35:31.477 回答