我正在使用iPhone应用,在特定视图中,我需要加载两个不同的实体:一个将填充UITableView
,另一个将填充UITextView
。
是否可以使用单个NSFetchedResultsController
获取这两个属性?
或者我是否需要使用两个不同的NSFetchedResultsController
?
关于如何最好地解决这个问题的任何想法?
答案 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中,创建一个搜索栏,其中包含您拥有的范围。
选择不同的范围时,您可以获取不同的实体!
这是因为我制作了这样的应用程序!
用户也可以更轻松地分离两种不同的数据!