0
这是一个棘手的问题。核心数据关系,多个托管对象上下文和线程
我有Document
实体,当前正从后台线程上的SQLite数据库导入到CoreData中。背景线程有一个单独的上下文,我正在每500个条目分配一次保存。
保存后台线程上下文会触发一个通知,该通知抓取我的主线程的上下文并在两者之间执行合并。
如果我只导入document
实体,一切都按预期工作。
当我尝试建立当前document
被创建时,另一个实体briefcase
之间的关系时,会出现我的问题。
这就是我的进口程序目前确实:
- 通过SQLite数据库行创建
Briefcase
实体 - 循环和创造
Document
实体的每一行 - 创建回路中的文档之间的关系,公文包实体
- 每隔500行,我保存&重置上下文。这会触发一个
ContextSave
通知,该通知抓取主线程并与主线程的上下文合并。 - 这是我的问题是:保存&复位上面,我
Briefcase
实体获取与主线程,所以当我继续循环合并之后,下一个文档实体创建试图将自身与公文包相关联,这是在我得到一个崩溃,说我无法在单独的线程上建立对象之间的关系。
我知道,如果在保存后删除调用以重置上下文的调用,那么所有操作都按预期工作,但是我的内存占用量增加了,这不是我准备接受的。
所以我的问题是:
你能想到的周围(合法的)保持公文包实体整个导入过程,所以我可以继续创建关系的一种方式?
我的第一个想法是创建没有上下文的公文包实体,然后在整个过程完成后将其添加到上下文中。这并没有奏效(它在创作时崩溃了)。
您的想法非常感谢。 罗格