核心数据:NSFetchedResultsController可以获取两个不同的实体吗?

时间:2010-06-30 07:12:17

标签: cocoa core-data controller entities

我正在使用iPhone应用,在特定视图中,我需要加载两个不同的实体:一个将填充UITableView,另一个将填充UITextView

是否可以使用单个NSFetchedResultsController获取这两个属性?

或者我是否需要使用两个不同的NSFetchedResultsController

关于如何最好地解决这个问题的任何想法?

4 个答案:

答案 0 :(得分:15)

每个获取请求只有一个实体,每个获取结果控制器只有一个获取。因此,每个实体都需要单独的控制器。

如果你考虑一下,你如何制作一个谓词来获取两个逻辑上独立的实体?

您可能根本不需要两次取件。在大多数情况下,您可以获取填充表的实体,然后使用所选行的实体的关系来填充类似文本视图的内容。

答案 1 :(得分:8)

正如TechZen所说,答案是否定的。

但是,您可以自己监控NSManagedObjectContext的保存并对这些保存做出反应。如果你真的需要观看多个实体(在iPad上比iPhone更常见),那么在NSNotification上添加NSManagedObjectContextDidSaveNotification观察者并查看-userInfo回来的NSNotification然后,您可以根据结果运行谓词,以确定是否需要更新显示。这就是NSFetchedResultsController正在做的事情。

答案 2 :(得分:3)

最佳解决方案是重构您的模型,看看您的2个实体是否有共同点。您可以为相交的东西创建一个抽象实体,然后从中继承您的2个实体。在抽象实体上执行提取,并且获取结果控制器应返回混合结果。

答案 3 :(得分:2)

The quick answer is NO. But I found a creative answer.

在tableViewController中,创建一个搜索栏,其中包含您拥有的范围。

选择不同的范围时,您可以获取不同的实体!

这是因为我制作了这样的应用程序!

用户也可以更轻松地分离两种不同的数据!