【发布时间】:2014-06-14 07:38:55
【问题描述】:
我正在使用下图中显示的核心数据堆栈。我想设计一个可以在两个工作上下文中创建对象的结构。
我在设置中观察到的是,如果两个上下文几乎同时尝试创建相同的对象(对于唯一键),db 最终会为表创建两行。有没有办法解决这个问题?提前感谢您的回复。
【问题讨论】:
标签: ios objective-c core-data
我正在使用下图中显示的核心数据堆栈。我想设计一个可以在两个工作上下文中创建对象的结构。
我在设置中观察到的是,如果两个上下文几乎同时尝试创建相同的对象(对于唯一键),db 最终会为表创建两行。有没有办法解决这个问题?提前感谢您的回复。
【问题讨论】:
标签: ios objective-c core-data
确保唯一性的唯一方法是拥有一个协调对象,所有上下文都可以用来验证它们的操作(如果您愿意,可以使用“唯一性强制执行器”)。
一般算法描述为HERE,但是您属于“多线程/上下文”类别,这会使事情复杂化。
在多线程环境中,您的实施者必须先保存到存储区(使用其自己的托管对象上下文),然后再将结果返回给调用对象。
一般流程是(无缓存版本):
NSManagedObjectIDs 或在调用者上下文中导入的对象,否则您将面临跨上下文访问托管对象的风险【讨论】: