【发布时间】:2016-05-24 17:07:58
【问题描述】:
我有如下数据模型关系(括号内是属性)
日(日期)------------>> 事件(日期,名称)
从Day到Event之间存在一对多的关系。不存在反向关系(即 Event 实体没有对 Day 的引用)
首先创建并保存事件。日是稍后创建的。
在检索 Day 实体时,是否有办法让核心数据也去检索与该日期日期相同的每个 Event?我搜索了一些其他问题,但所有这些问题都包括在创建 Day 时手动设置 Events。
【问题讨论】:
我有如下数据模型关系(括号内是属性)
日(日期)------------>> 事件(日期,名称)
从Day到Event之间存在一对多的关系。不存在反向关系(即 Event 实体没有对 Day 的引用)
首先创建并保存事件。日是稍后创建的。
在检索 Day 实体时,是否有办法让核心数据也去检索与该日期日期相同的每个 Event?我搜索了一些其他问题,但所有这些问题都包括在创建 Day 时手动设置 Events。
【问题讨论】:
您使用NSFetchRequest 查询CoreData,它只能查询一种特定的实体类型(因此是initWithEntityName(_:) 初始化程序)。如果您没有在两个实体之间设置关系,则无法使用单个 NSFetchRequest 实例检索它们(假设您在两者上都有 date 属性,您可以使用相同的 NSPredicate )。
话虽如此,正如其他问题的答案可能表明的那样,如果您设置了关系,则可以将 NSFetchRequest 实体上的属性 relationshipKeyPathsForPrefetching 设置为您的关系键是获取关系的实体当您获取初始实体时。假设您的目标是避免多次访问数据库,您可能还需要考虑将 returnsObjectsAsFaults 设置为 false(仅当对象数量相对较少时才这样做)。
【讨论】:
NSFetchRequest 检索它们。”
正如 Charles 所说,只需发出两个 fetch 请求。第一个请求检索Day,然后第二个请求检索同一日期的Events。
不过,我要做的是建立反向关系并更改对象创建的时间。在创建Event时,如果没有Day对象可以链接,则同时创建一个新的Day对象。如果你这样做了,你可以自己获取一个Day,它的Events将通过关系自动可用。
【讨论】: