将 Core Data 数据库保存到 sqlite 文件会丢失一些递归/循环关系信息
Posted
技术标签:
【中文标题】将 Core Data 数据库保存到 sqlite 文件会丢失一些递归/循环关系信息【英文标题】:Saving Core Data database to sqlite file loses some recursive/circular relationship information 【发布时间】:2010-10-23 17:11:06 【问题描述】:我的 iPhone 文字游戏中有非常简单的循环(或自反射)关系核心数据模型。 实体词与指向相关词的自身具有一对多关系:
我使用 NSPersistentDocument Core Data Mac OS X 模板应用程序将单词导入 Core Data sqlite 数据库。
导入数据后,我可以看到所有关系都被正确导入(每个词至少有一个或多个相关词)。
但是,将数据库保存到 sqlite 文件并再次重新打开后,相关单词会大量丢失指针(单词仍然存在但关系消失 - NSLog 显示它们为空强>)。有时可能会丢失高达 50% 的相关词信息。
当我将我的数据库存储为 XML 或二进制 文件并重新打开它时,所有关系都被正确保存。
谁能指出我当同一个数据库的 XML 和二进制版本正确存储所有内容时,为什么保存到 sqlite 文件会导致一些关系数据丢失?
我对 sqlite 很感兴趣,因为它认为在 iPhone 中使用时(内存)效率更高,并且当然会产生更小的数据库文件大小。
【问题讨论】:
正如 Dave 所指出的,这是一对多的关系。我同意。我的错。无论如何,它不会改变保存到 XML 或二进制文件的事实不会使我的一半递归关系无效,而 sqlite 会这样做。 【参考方案1】:这不是一对多的关系。那是一对多的关系。它没有逆。你可以看出这一点,因为线条的一端只有箭头。尝试添加反向关系,看看是否有帮助。
【讨论】:
感谢您的具体说明。我更愿意保持这种松散的关系。无论如何:其他格式(XML 和二进制)正确保存这种关系的原因是什么?以上是关于将 Core Data 数据库保存到 sqlite 文件会丢失一些递归/循环关系信息的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SQLite 文件预加载 Core Data,该文件引用使用“外部存储”保存的图像?
iPhone Core Data 对象添加到 NSMutableArray