iPhone:每个实体的NSFetchedResultsController?

时间:2011-03-22 08:01:01

标签: iphone core-data nsfetchedresultscontroller

我有三个具有一对多关系的实体(Book< --->> Page< --->> Text) 我想使用一个表视图来呈现Book.titles,一个用于Page.no的表视图和一个用于在单击Page.no时显示Text的视图。

我是否需要为每个实体设置fetchedResultsController,或者我是否可以访问Text对象 使用Book实体 - Book.pages ...等?

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你只需要一个获取的结果控制器,而CoreData将完成其余的工作。

因此,您在NSFetchedResultsController中填写了要显示的所有书籍,并使用UITableViewController子类显示它们。然后,当用户选择一个时,您将本书传递给另一个UITableViewController子类,该子类使用book.pages来获取并显示该书中的所有页面。然后重复这个想法以显示文本实体。

HTH

PS - 如果您还没有,您可能会发现使用xCode的托管对象类生成器来确保正确设置book.pages和pages.texts很有用。要使用它,请打开.xcdatamodel文件,突出显示一个实体,然后选择File-> New File并选择Managed Object Class,然后按照步骤操作。

答案 1 :(得分:0)

您可以通过关系访问所有对象,但根据您的表视图的复杂程度,管理数据源方法可能会变得棘手。虽然这是可行的!

例如,如果您决定获取图书,只要您有对该实例的引用,您将获得所有页面并将它们放在一个数组中:

Book *bookItem = [self.frc objectAtIndexPath:indexPath];
NSArray *dataSource = [[book objectForKey:@"pages"] allObjets];

另一种选择是创建一个抽象类并使其成为所有3个实体的父类,然后使用此类获取,它将为您提供所有书籍,页面和文本的数组。从那里,您可以测试该类并相应地填充表。