coreData 中的关系如何工作

Posted

技术标签:

【中文标题】coreData 中的关系如何工作【英文标题】:How relationship works in coreData 【发布时间】:2015-09-23 03:27:37 【问题描述】:

我知道如何在 coredata 中创建关系,但我不知道它是如何工作的。

例如:

员工: 姓名 身份证

部门: 名字

我可以在'Department'和'Employee'之间创建一个关系(一对多),当我获取'Department'时,我也会自动获取员工。

如果没有关系,我将在部门中创建一个字段(employeeId),并加入'Employee'表。

我不知道 coredata 如何通过关系获取正确的员工。

谢谢

【问题讨论】:

【参考方案1】:

您可以从真正的 sqlite 文件中探索实体是什么。

例如 我有这种关系

当我添加三个记录时,我使用 SliteBrowser 查看 SQLite 文件 它有五张桌子

ZDEPARTMENT 表 ZEMPLOYEE 表

注意我在ZEMPLOYEE中选择了什么,它保存了ZDEPARTMENT中department的id,所以核心数据关系是如何工作的很清楚。

注意:

Z_PK 在 SQLite 表中是唯一的 Z_ENT 是它们的实体 ID,与 Z_PRIMARYKEY 表中列出的 ID 相同

【讨论】:

那么coredata会自动为每个实体生成Z_PK,当我们创建关系时,它会添加一个字段(外键)并自动插入值? 是的,核心数据会为您处理关系,您只需要专注于OO编程。您可以在文档中找到更多详细信息。developer.apple.com/library/prerelease/tvos/documentation/Cocoa/…【参考方案2】:

您可以在 NSFetchRequest 中使用 NSPredicate 获取正确的员工。 NSPredicate 类似于数据库中使用的 where 子句。 请检查:Use NSPredicate in CoreData Fetch 和NSPredicate in CoreData

希望对你有帮助。

【讨论】:

以上是关于coreData 中的关系如何工作的主要内容,如果未能解决你的问题,请参考以下文章

如何对 CoreData 中的许多关系执行复合查询

如何在 Coredata 中的相同实体之间创建多个关系?

CoreData:如何建模循环多对多关系

CoreData 关系内容不持久

如何以某种通用方式删除有序对多 CoreData 关系中的对象?

如何一次将多个关系保存到 CoreData?