我有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];
任何人都可以解释在枚举期间我可能做错了什么吗?
谢谢!
答案 0 :(得分:1)
[frc performFetch:&error]
无效,因为您之前已设置frc = nil
。
我假设__fetchedResultsController1, ...
是self
的实例变量,您想将它们设置为nil
,以便在下次访问时重新创建它们?我认为在一个循环中没有一种非丑陋的方法可以做到这一点,并且它可能不适用于4个项目。