0

我只是无法停止搜索和阅读有关“更改谓词”的内容,但我仍然不知道如何解决我的问题,所以......我所拥有的是:

1 - 几个带有不同单元格的表格视图,每个单元格都有多个文本字段。

2 - 用户按下这些文本字段之一并出现一个表格视图(在弹出框内)。

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

4 - 一切正常......除了我需要每次用户通过时更改谓词,例如从 tableview1 到 tableview2。

5 - 下面是我的 popoverTableview 中的 NSFetchedResultsController 方法,我尝试了多种方法,例如:“if´s”;“开关”;还指向 tableviews 中的 textfield 标记,什么都没有。我想我不需要将缓存设置为 nil,因为它已经设置为 nil ...还尝试删除: if (_fetchedResultsController != nil) return _fetchedResultsController;

什么都没有!!!,我需要了解什么?我没有得到什么?我在这个上失去了几天。帮助!

- (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;
}

提前致谢

4

1 回答 1

1

你只需要明确地 nil 你的 FRC。然后让 FRC 执行 fetch。

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

于 2013-11-04T06:15:39.467 回答