试图通过NSFetchedResultsController进行枚举

时间:2012-08-16 14:46:48

标签: objective-c nsfetchedresultscontroller enumeration

我有4个表视图,都有自己的NSFetchedResultsController

有一次我试图重置/重新加载它们......就像这样

fetchedResultsControllerArray = [NSArray arrayWithObjects:__fetchedResultsController1, __fetchedResultsController2, __fetchedResultsController3, __fetchedResultsController4, nil];


for (NSFetchedResultsController __strong *frc in fetchedResultsControllerArray){

    frc.delegate = nil;
    frc = nil;

    [frc performFetch:&error];
}

[tv1 reloadData];
[tv2 reloadData];
[tv3 reloadData];
[tv4 reloadData];

这不起作用..表格没有显示最新数据。

但是,如果我取出枚举并只使用其中一个就可以了?

fetchedResultsControllerArray = [NSArray arrayWithObjects:__fetchedResultsController1, __fetchedResultsController2, __fetchedResultsController3, __fetchedResultsController4, nil];

__fetchedResultsController1.delegate = nil;
__fetchedResultsController1 = nil;

[__fetchedResultsController1 performFetch:&error];

[tv1 reloadData];
[tv2 reloadData];
[tv3 reloadData];
[tv4 reloadData];

任何人都可以解释在枚举期间我可能做错了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

循环中的

[frc performFetch:&error]无效,因为您之前已设置frc = nil

我假设__fetchedResultsController1, ...self的实例变量,您想将它们设置为nil,以便在下次访问时重新创建它们?我认为在一个循环中没有一种非丑陋的方法可以做到这一点,并且它可能不适用于4个项目。