NSFetchedResultsController:在调用 -performFetch 之前,我是不是应该始终检查 fetchedObjects==nil?
Posted
技术标签:
【中文标题】NSFetchedResultsController:在调用 -performFetch 之前,我是不是应该始终检查 fetchedObjects==nil?【英文标题】:NSFetchedResultsController: should I always check fetchedObjects==nil before calling -performFetch?NSFetchedResultsController:在调用 -performFetch 之前,我是否应该始终检查 fetchedObjects==nil? 【发布时间】:2010-08-03 20:23:17 【问题描述】:我将 NSFetchedResultsController 用于我的表格视图。我在控制器的 -viewDidLoad 方法中调用 -performFetch。
有时我的控制器被卸载然后重新加载,导致另一个调用 -viewDidLoad 和 -performFetch。我发现这导致了一个错误:“NSFetchedResultsController 错误:在控制器中找不到‘(null)’部分”。我发现像这样多次调用 -performFetch 会导致问题,并修改了我的 -viewDidLoad: 方法以执行以下操作:
if( fetchedResCtrlr.fetchedObjects == nil )
NSError *error;
if ( ![fetchedResCtrlr performFetch:&error] )
...
作为 Core Data 的新手,我想知道这是否是正确的做法。我真的应该能够多次调用 -performFetch: 而不会出错吗?我应该在 -viewDidUnload: 中做些什么吗?
谢谢!
【问题讨论】:
【参考方案1】:通常情况下,-viewDidUnload:
中的 NSFetchedResultsController
无需执行任何操作。此外,针对-fetchedObjects
检查 nil 通常是不值得的。听起来您的代码还有其他流程问题。多次调用-performFetch:
只会损害其自身的性能,而不会产生任何其他不良影响。
【讨论】:
以上是关于NSFetchedResultsController:在调用 -performFetch 之前,我是不是应该始终检查 fetchedObjects==nil?的主要内容,如果未能解决你的问题,请参考以下文章