ios - CoreData 获取实体

标签 ios core-data entity relationship fetch

我有一个非常基本的问题。 如果我有两个实体,它们之间有关系(可以说 entityOne 与 entityTwo 有一对多关系)。 当我获取 entityOne 时,它​​会自动获取它的关系吗?还是我也必须获取它们并将它们分配给相应的实体?

我认为在聊天中问这个问题实际上会更好,因为这是一个简单的问题,但我还没有所需的声誉。

由于太短,我无法发布我的问题,所以我会再问一个问题。

在同一个项目中,我有一个获取实体的 rootViewController。现在,如果我想添加一个事件,我必须将用户发送到另一个 View ,使用 textFields 等。我最终为每个 viewControllers 创建了一个数组“eventArray”,因为我找不到更有效的方法来做到这一点。 假设我在 rootViewController 中有一个 NSMutableArray *eventsArray,在 addEventViewController 中我也有一个 NSMutableArray *eventsArray,它在推送 addEventViewController (addEventViewController.eventsArray = self.eventsArray) 之前设置。 我如何更有效地做到这一点?我很确定这不是正确的做法。

最佳答案

回答你的第一个问题:

这种情况由 Core Data 自动处理,这种机制称为“故障”。苹果有some helpful documentation on this .简而言之,相关对象不会被获取,但是当您尝试访问它们时,Core Data 会自动从持久存储中检索它们。

当然,在某些情况下,这种逐一获取相关对象(例如,可能会在表格中显示有关相关对象的信息)会减慢您的应用程序。

在这种情况下,您可以使用 setRelationshipKeyPathsForPrefetching: NSFetchRequest 上的方法预先检索这些对象。这都是平衡内存使用和性能的问题。

错误是 Core Data 的一个非常重要的部分,我强烈建议您仔细阅读文档以确保您很好地理解如何以及何时使用它。

关于ios - CoreData 获取实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8521605/

相关文章:

ios - 如何将对象放在栏按钮项目上?

ios - +entityForName : could not locate an entity named 'Dogs' in this model.

java - 插入触发器导致 EntityNotFoundException

java - 如何在 native 查询中使用 sql 函数

ios - 客户的应用内购买,付款问题

ios - 如何在 Cordova 中启用 c++11?

iphone - 将 UIKeyboardFrameEndUserInfoKey 转换为 View 或窗口坐标

ios - 从 coreData 加载图像时崩溃

iphone - 核心数据executeFetchRequest抛出NSGenericException(枚举时集合发生了变化)

java - 将实体的元素添加到同一实体 - @OneToMany