我有两个NSManagedObjectContext:parentContext是主要上下文,而childContext是PrivateQueueConcurrencyType
我使用childContext在后台线程中将数据同步到服务器,并且在同步成功后,我设置了data.isSynced = true

用户可能在同步期间更改数据。这将通过设置data.isSynced = false将数据标记为脏数据。

两个线程(主线程和同步线程)同时运行,如果parentContext具有data.isSynced == false而childContext具有data.isSynced == true,则可能会发生错误的情况。调用childContext.save()将覆盖parentContext中的更改,而我将丢失更改,并且不会将更新后的数据再次同步到服务器。

如何改进当前设计?
有没有一种方法可以自定义父上下文和子上下文之间的合并?

最佳答案

不要使用单个 bool 标志,而是使用2个日期。一个日期用于最后一次编辑,另一个日期用于最后一次同步。它们每个都只能从1个线程进行更新。后台线程将读取两者,以检查是否需要同步数据,但这很好。

关于swift - 在后台线程: multiple-contexts in core data中将数据同步到服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37462613/

10-12 02:58
查看更多