将来自不同表(实体)的 2 个特定托管对象与 Core Data 保持关联的最佳方法是啥?
Posted
技术标签:
【中文标题】将来自不同表(实体)的 2 个特定托管对象与 Core Data 保持关联的最佳方法是啥?【英文标题】:What is the best way to keep association between 2 specific managed objects from different tables(entities) with Core Data?将来自不同表(实体)的 2 个特定托管对象与 Core Data 保持关联的最佳方法是什么? 【发布时间】:2017-02-20 15:04:16 【问题描述】:在我的应用中,我有 2 个实体:
项目: 项目 ID:Int64 标题:字符串? 地址:字符串? 开始日期:日期 endDate: 日期 ...
用户: 用户 ID:Int64 电子邮件:字符串? 名字:字符串? 姓氏:字符串? 电话号码:字符串?
并且我需要在特定时间间隔内保持特定用户和特定项目之间的关联,特别是我需要知道哪个项目在哪个时间间隔内属于(分配给)哪个用户。 因此,我需要一个名为 Timetable 的第三个实体。
到目前为止,我有这个:时间表: 项目 ID:Int64 用户 ID:Int64 开始日期:日期 endDate: 日期
另一种可能的解决方案是 Timetable 实体与 Project 对象具有一对一关系,与 User 对象具有一对一关系,其中仅包含 startDate 和 endDate 属性其他相关数据。 像这样:时间表:
同步状态:Int16 创建时间:日期 开始日期:日期 endDate: 日期 项目:项目(一对一) 用户:用户(一对一)
但是在这样做时,我需要为这两种一对一关系设置什么逆向关系?(我是否还需要为每个项目和每个用户实体添加一个时间表:时间表一对一关系并设置它与时间表实体中的 2 个相反?)
我还提到我正在将 mysql 用于我的后端服务器,并且我下载了这些 userId、projectId 作为主键。
所以我的问题是:在不同属性(在我的情况下为时间间隔)的不同表(实体)的 2 个特定表记录(托管对象)与核心数据之间保持关联的最佳做法是什么?
【问题讨论】:
【参考方案1】:此数据模型应该适用于您的用例:
Timetable
上的 project
和 user
属性都是 To One 关系。 timetableEntries
在Project
和User
上都是To Many 关系。
【讨论】:
以上是关于将来自不同表(实体)的 2 个特定托管对象与 Core Data 保持关联的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
iOS核心数据:存储与不同实体中任何NSManagedObject的关系