代码之家  ›  专栏  ›  技术社区  ›  Lukasz

将核心数据数据库保存到sqlite文件会丢失一些递归/循环关系信息

  •  1
  • Lukasz  · 技术社区  · 15 年前

    在我的iPhone文字游戏中,我有一个非常简单的循环(或自我反映)关系核心数据模型。 实体词与自身有一对多的关系,指向相关词:

    alt text

    我使用NSPersistentDocument核心数据Mac OS X模板应用程序将单词导入核心数据sqlite数据库。

    导入数据后,我可以看到所有关系都被正确导入(每个单词至少有一个或多个相关单词)。

    然而 将数据库保存到sqlite文件并重新打开后,相关单词会大量丢失 指针(文字仍然存在,但关系已经消失)- NSLog为它们显示null ).有时可能会丢失多达50%的相关单词信息。

    当我将数据库存储为 XML还是二进制 归档并重新打开,所有关系 正在被妥善保存。

    有人能指给我看吗 为什么保存到sqlite文件会导致某些关系数据丢失 当同一数据库的XML和二进制版本正确存储所有内容时?

    我对sqlite很感兴趣,因为它在iPhone中使用时(内存)效率更高,当然也会产生更小的数据库文件大小。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Dave DeLong    15 年前

    这不是一对多的关系。这是一种多对多的关系。它没有反义词。你可以这么说,因为这条线的一端只有箭头。尝试添加反向关系,看看是否有帮助。