使用NSFetchedResultController显示DetailsViewController

时间:2010-08-18 15:45:26

标签: iphone core-data detailsview nsfetchedresultscontroller

在我的iphone应用程序中,我有核心数据到多个关系主题 - >>问题,所以每个主题都包含几个问题,我想出了如何使用NSFetchedResultController在UItableView中显示主题列表,但我不知道如何构建我的FetchedResultController来显示所选主题中的问题。

我试图在互联网上找到类似的教程或示例,但找不到任何东西。

我该怎么做?

非常感谢

3 个答案:

答案 0 :(得分:3)

你做 NOT 需要回到NSFetchRequest来获取关系另一端的对象。只需询问Topic的问题即可。这将为您提供NSSet个出现故障的实体。错误的实体会占用非常的小内存,您可以轻松获取其中的1000个内容。

如果您需要对这些内容进行过滤,那么您可以对返回的-filteredSetWithPredicate:执行NSSet,但转出磁盘会浪费并且速度很慢。

答案 1 :(得分:2)

您不会使用NSFetchedResultsController。相反,您将在详细视图控制器中定义属性

@property (nonatomic, retain) Topic *topic;

然后,当您创建详细视图控制器时,您将根据didSelectRowForIndexPath中选择的主题设置属性。

然后在您的详细视图中,只需使用核心数据关系(topic.questions)从Topic对象中获取问题

答案 2 :(得分:0)

好的,我发现我需要使用NSPredicate。现在我正在尝试将它添加到我的fetchedResultController中,如下所示:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"topic == %@", self.topic];
[fetchRequest setPredicate:predicate];

但收到错误:

'keypath topic not found in entity <NSSQLEntity QuestionItem id=2>'

我该怎么做?

由于

修改

知道了!

需要在数据模型中设置双方关系并设置谓词如下:

[NSPredicate predicateWithFormat:@"topic.topicName == %@", self.topic]