NSFetchedResultsController:在调用-performFetch之前,我应该总是检查fetchedObjects == nil吗?

时间:2010-08-03 20:23:17

标签: iphone core-data nsfetchedresultscontroller

我正在使用NSFetchedResultsController作为我的表视图。我在控制器的-viewDidLoad方法中调用了-performFetch。

有时我的控制器被卸载然后重新加载,导致另一次调用-viewDidLoad和-performFetch。我发现这导致了一个错误:“在控制器中找不到NSFetchedResultsController错误:section'(null)'”。我发现像这样多次调用-performFetch会导致问题,并修改了我的-viewDidLoad:方法来执行以下操作:

if( fetchedResCtrlr.fetchedObjects == nil )
{
    NSError *error;
    if ( ![fetchedResCtrlr performFetch:&error] )  
       ...
}

对核心数据不熟悉,我想知道这是否是正确的行动。我是否真的能够多次调用-performFetch:没有错误?我应该在-viewDidUnload中做些什么:?

谢谢!

1 个答案:

答案 0 :(得分:3)

通常情况下,NSFetchedResultsController中的-viewDidUnload:无需执行任何操作。此外,检查-fetchedObjects的nil通常是不值得的。听起来你的代码有其他流量问题。多次调用-performFetch:只会损害性能本身,而不会产生任何其他不良影响。