Iphone iOS COreData中允许多个NSFetchedResults控制器?

Iphone iOS COreData中允许多个NSFetchedResults控制器?,iphone,core-data,Iphone,Core Data,抱歉,如果这是一个新手问题。我正试着把我的头脑集中在核心数据上 我有一个选项卡栏应用程序,其中每个选项卡都包含一个导航控制器。每个导航控制器的顶层是一个表,其中显示了核心数据存储中相同数据集的特定和不同视图。这有点像iTunes,其中一个选项卡显示由艺术家组织的歌曲,另一个选项卡显示由标题组织的歌曲 我的问题是NSFetchedResultsController需要住在哪里?每个导航控制器能否拥有自己的NSFetchedResultsController并以自己独特的方式执行抓取,或者我是否必须

抱歉,如果这是一个新手问题。我正试着把我的头脑集中在核心数据上

我有一个选项卡栏应用程序,其中每个选项卡都包含一个导航控制器。每个导航控制器的顶层是一个表,其中显示了核心数据存储中相同数据集的特定和不同视图。这有点像iTunes,其中一个选项卡显示由艺术家组织的歌曲,另一个选项卡显示由标题组织的歌曲


我的问题是NSFetchedResultsController需要住在哪里?每个导航控制器能否拥有自己的NSFetchedResultsController并以自己独特的方式执行抓取,或者我是否必须将FRC放入应用程序委托中,以便两个选项卡都可以访问它?我知道上下文在app delegate中,所以我想这里也应该是这样。感谢您的帮助。

NSFetchedResultsController与应用程序代理或特定视图控制器之间没有直接关系

通常,您将拥有一个与数据集相对应的FRC。如果相同的数据集适用于你应用程序中的每个VC,你可能会使FRC在整个应用程序中可用。如果您有许多与特定VC密切相关的不同数据集,则可以将它们设置为该VC的成员变量


在我开发的应用程序中,我倾向于发现每个VC有一个FRC是最常见的。

NSFetchedResultsController与应用程序委托或特定视图控制器之间没有直接关系

通常,您将拥有一个与数据集相对应的FRC。如果相同的数据集适用于你应用程序中的每个VC,你可能会使FRC在整个应用程序中可用。如果您有许多与特定VC密切相关的不同数据集,则可以将它们设置为该VC的成员变量


在我开发的应用程序中,我倾向于发现每个VC有一个FRC是最常见的。

为什么不止一个NSFetchedResultsController会出现问题?它们只是获取数据并监视上下文的更改

您不会遇到多个NSFRC控制器的问题,至少如果它们位于自己的viewController中,当然您不应该从两个不同的NSFRC委托更改相同的tableView

我通常在ViewWillEnglish方法中禁用(即self.frc=nil)NSFetchedResultsController。
Imho如果只有一个UITableView可见,则无需更新五个UITableView


编辑:在仔细考虑之后,我得出结论,每次用户切换选项卡时分配新FRC对性能的影响大于更新5个表视图。我从未检查过当表格视图不可见时是否会更新单元格

为什么多个NSFetchedResultsController会出现问题?它们只是获取数据并监视上下文的更改

您不会遇到多个NSFRC控制器的问题,至少如果它们位于自己的viewController中,当然您不应该从两个不同的NSFRC委托更改相同的tableView

我通常在ViewWillEnglish方法中禁用(即self.frc=nil)NSFetchedResultsController。
Imho如果只有一个UITableView可见,则无需更新五个UITableView


编辑:在仔细考虑之后,我得出结论,每次用户切换选项卡时分配新FRC对性能的影响大于更新5个表视图。我从未检查过当表格视图不可见时是否会更新单元格

NSFetchedResultsController专门设计用于将核心数据中的数据提供给UITableView。因此,每个tableview在tableview的控制器中都应该有自己的控制器

NSFetchedResultsController专门设计用于将核心数据中的数据提供给UITableView。因此,每个tableview在tableview的控制器中都应该有自己的控制器

我会在viewDidUnload中释放(并设置为零)NSFRC。只有当VC不可见(内存变得稀缺)时才会调用此函数,并且在ViewController之间切换时,可以更快地显示数据。否则,您还需要在tableView中重新加载数据,以确保对上下文所做的任何更改都是可见的。像你说的那样改变可能是个好主意。我将为我的应用程序提交增强请求。谢谢。我会在viewDidUnload中释放(并设置为零)NSFRC。只有当VC不可见(内存变得稀缺)时才会调用此函数,并且在ViewController之间切换时,可以更快地显示数据。否则,您还需要在tableView中重新加载数据,以确保对上下文所做的任何更改都是可见的。像你说的那样改变可能是个好主意。我将为我的应用程序提交增强请求。谢谢