0

我只是不容停止搜索并阅读了“谓词的变化”,但我仍然鸵鸟政策知道如何解决我的问题,所以...我有什么是:不同NSpredicates多tableviews

1 - 几种不同的单元格和每个单元格的表格都有多个文本框。

2 - 用户按下其中一个文本框,然后出现一个tableview(弹出框内)。

3 - 此popoverTableview具有所有核心数据“工作”,并且假设提供数据以插入到按下的文本字段中。

4 - 一切工作正常...除了事实,我需要的谓词来改变每次用户通过例如tableview1 tableview2。

5 - 下面是我的popoverTableview中的NSFetchedResultsController方法,我尝试了许多方法,如:“if's”; “开关”;也指向tableviews中的textfield标签,而不是任何东西。我想我不需要将缓存设置为零,因为它已经设置为零...还尝试删除:if(_fetchedResultsController!= nil)return _fetchedResultsController;

而且没有什么!!!我需要了解什么?我没有得到什么?我在这一天上失去了日子。HELP!

- (NSFetchedResultsController *)fetchedResultsController 
{ 
if (_fetchedResultsController != nil) 
{ 
    return _fetchedResultsController; 
} 

NSFetchRequest *fetchRequestList = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entityList = [NSEntityDescription entityForName:@"List" inManagedObjectContext:self.managedObjectContext]; 
[fetchRequestLista setEntity:entityList]; 

TableViewOne *table1 = [[Cobertura alloc]init]; 
TableViewTwo *table2 = [[Cobertura alloc]init];  

if (table1 textFieldShouldBeginEditing:table1.textFieldPressed) 
{ 
fetchRequestList.predicate = [NSPredicate predicateWithFormat:@"%K IN %@", @"reference", arrayTableview1]; 
} 

if (table2 textFieldShouldBeginEditing:table2.textFieldPressed) 
{ 
fetchRequestList.predicate = [NSPredicate predicateWithFormat:@"%K IN %@", @"reference", arrayTableview2]; 
} 

NSSortDescriptor *cellTitle = [[NSSortDescriptor alloc] initWithKey:@"reference" ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:cellTitle, nil]; 
[fetchRequestLista setSortDescriptors:sortDescriptors]; 

_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequestLista managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"referencia" cacheName:nil]; 
_fetchedResultsController.delegate = self; 
self.fetchedResultsController = _fetchedResultsController; 

return _fetchedResultsController; 
} 

在此先感谢

回答

1

你只需要你无明确FRC。然后让FRC执行提取。

FRC的自定义getter方法看起来不错。它确保tableview1和tableview2的谓词不同,并相应地构造FRC。但是,只有在FRC为零的情况下,它才能完成所有这些工作。如果不是,它只是返回后台实例变量_fetchedResultsController,其余的代码根本不被执行;这就是为什么当你切换表视图时你需要明确地删除你的FRC。