我正在开发一个 iPhone 应用程序,在特定视图中我需要加载两个不同的实体:一个将填充 a UITableView
,另一个将填充 a UITextView
。
是否可以使用单个获取两个属性NSFetchedResultsController
?
还是我需要使用两个不同NSFetchedResultsController
的 s?
关于如何最好地解决这个问题的任何想法?
我正在开发一个 iPhone 应用程序,在特定视图中我需要加载两个不同的实体:一个将填充 a UITableView
,另一个将填充 a UITextView
。
是否可以使用单个获取两个属性NSFetchedResultsController
?
还是我需要使用两个不同NSFetchedResultsController
的 s?
关于如何最好地解决这个问题的任何想法?
每个提取请求只有一个实体,每个提取结果控制器只有一个提取。因此,您需要为每个实体设置单独的控制器。
如果您考虑一下,您将如何创建一个谓词来获取两个逻辑上独立的实体?
您可能根本不需要两次提取。在大多数情况下,您可以获取填充表格的实体,然后使用所选行的实体的关系来填充文本视图之类的内容。
正如 TechZen 所说,答案是否定的。
但是,您可以监控NSManagedObjectContext
自己的保存并对这些保存做出反应。如果您确实需要观看多个实体(这在 iPad 上比在 iPhone 上更常见),那么NSNotification
在 the 上添加一个观察者NSManagedObjectContextDidSaveNotification
并查看返回-userInfo
的NSNotification
那个。然后,您可以针对结果运行谓词以确定是否需要更新显示。这就是他们在NSFetchedResultsController
幕后所做的事情。
最好的解决方案是重构您的模型,看看您的 2 个实体是否有共同点。您可以为相交的东西创建一个抽象实体,然后从中继承您的 2 个实体。在抽象实体上执行提取,您的提取结果控制器应该返回混合结果。
The quick answer is NO. But I found a creative answer.
在您的 tableViewController 中,使用您拥有的范围创建一个搜索栏。
选择不同的范围后,您可以获取不同的实体!
这很有效,因为我制作了这样的应用程序!
用户也可以更轻松地分离两个不同的数据!