CoreData获取实体

时间:2011-12-15 14:26:34

标签: ios core-data entity relationship fetch

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

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

由于我的问题太短,我不能发表我的问题,我只会问另一个问题。

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

1 个答案:

答案 0 :(得分:3)

回答你的第一个问题:

这种情况由Core Data自动处理,该机制称为“故障”。 Apple有some helpful documentation on this。简单地说,不会获取相关对象,但是当您尝试访问它们时,Core Data将自动从持久性存储中检索它们。

当然,可能会出现这样一种情况:逐个获取相关对象(例如,显示某些关于表中相关对象的内容)会降低应用程序的速度。

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

错误是核心数据的一个非常重要的部分,我强烈建议您仔细阅读文档,以确保您对如何以及何时使用它有充分的了解。