如何将Core Data中的关系保存到持久性存储中?

时间:2013-02-01 10:10:39

标签: ios core-data persistent-storage

将CoreData与UIManagedDocument一起使用persisten Store是保存文件路径中文档中的SQLite数据库。我读到CoreData生成自己的主键(整数值)。

我对CoreData中的关系有两个问题:

  1. 由于CoreData是一个面向关系对象的数据库,我想知道如何保存实体中对象之间的关系? CoreData是否使用外键(例如,实体一使用实体二的主键作为外键)?
  2. 如何将关系保存到持久性商店文档?如果保存例如NSString或NSDictionary(对于二进制数据),则可以在打开持久性存储文档时看到这些对象。

1 个答案:

答案 0 :(得分:1)

这取决于。

对于一对一关系,目标实体的主键作为外键存储在实体的表(行)中。

对于多对多关系,会创建一个单独的连接表,用于存储源实体和目标实体的主键。

FWIW这很容易从命令行使用sqlite3进行探索。

$ sqlite3 cd.sqlite
$ (SQLite) .schema

这将显示您的多对多关系的连接表,您将能够看到您的一对一关系的外键列。

数据/字符串列也是如此。 SQLite允许数据和字符串(varchar)存储。