我正在使用下图所示的核心数据堆栈。我想设计一个可以在两个工作者上下文中创建对象的结构。
我在设置中观察的是,如果两个上下文同时尝试在同一时间创建相同的对象(对于唯一键),则db最终会为表创建两行。有办法解决这个问题吗?提前感谢您的回复。
答案 0 :(得分:0)
唯一可以确保唯一性的方法是拥有一个所有情境都会转向的协调对象来验证他们的操作(如果你愿意的话,还有#34;唯一性执行者")
一般算法被描述为HERE,但是你属于"多线程/上下文"类别,这会使事情复杂化。
在多线程环境中,执行者必须在将结果返回给调用对象之前对存储执行保存(使用自己的托管对象上下文)。
一般流程是(无缓存版本):
NSManagedObjectID
或导入的对象,否则您将面临托管对象的跨上下文访问风险