24

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

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

还是我需要使用两个不同NSFetchedResultsController的 s?

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

4

4 回答 4

14

每个提取请求只有一个实体,每个提取结果控制器只有一个提取。因此,您需要为每个实体设置单独的控制器。

如果您考虑一下,您将如何创建一个谓词来获取两个逻辑上独立的实体?

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

于 2010-06-30T13:35:49.987 回答
7

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

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

于 2010-06-30T18:37:34.900 回答
7

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

于 2014-07-23T10:37:12.013 回答
1
The quick answer is NO. But I found a creative answer.

在您的 tableViewController 中,使用您拥有的范围创建一个搜索栏。

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

这很有效,因为我制作了这样的应用程序!

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

于 2013-12-26T05:23:30.420 回答