2012-08-16 49 views
0

枚举我有4个tableviews都用自己的NSFetchedResultsController试图通过NSFetchedResultsControllers

在一个点上,我尝试重置/重载他们都..像这样

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

如果你在循环内设置frc = nil,你期望什么? – 2012-08-16 15:29:06

+0

我期待frc成为__fetchedResultsController1在第一个循环上的指针.. __fetchedResultsController2在第二个等.. – sayguh 2012-08-16 15:36:57

+0

'frc'不是循环中'__fetchedResultsController1'的指针。在第一个循环中有'frc == __fetchedResultsController1'等。设置'frc = nil'不会将'__fetchedResultsController1'设置为零!如果您之前将'frc'设置为'nil',则循环中的[frc performFetch:&error]没有任何作用。 – 2012-08-16 16:25:33

回答

1

[frc performFetch:&error]在循环中没有效果,因为您之前已设置frc = nil

我认为__fetchedResultsController1, ...是实例变量self,并且您想将它们设置为nil,以便它们在下次访问时重新创建?我认为在循环中没有一种不丑恶的方式来做到这一点,它可能不值得4项。