我认为这会工作,但我不知道为什么我做错了。我使用的谓词在下面的代码已取得的成果控制器:NSFetchedResultsController委托方法不为这些更改触发
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription * entity = [NSEntityDescription entityForName:@"SearchResult" inManagedObjectContext:[[DataInterfaceObject sharedAlloc] managedObjectContext]];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:10];
// Results Table predicate
NSPredicate *predicate_Results = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects: [ResultsTableVC resultsPredicate], [NSPredicate predicateWithFormat:@"searchUsed.isCollapsedView == NO"], nil]];
// Favorites Table predicate
NSPredicate *predicate_Favorites = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects: [FavoritesTableVC favoritesPredicate], [NSPredicate predicateWithFormat:@"favoritesInfoLink.isCollapsedView == NO"], nil]];
// Full predicate
NSPredicate *predicate =
[NSCompoundPredicate orPredicateWithSubpredicates: [NSArray arrayWithObjects:
predicate_Results, predicate_Favorites, nil]];
[NSFetchedResultsController deleteCacheWithName:@"resultsCache"];
[fetchRequest setPredicate:predicate];
的目的是获取匹配谓词所有SearchResult
实体。 SearchResult实体具有如下的searchUsed
关系:SearchResult < < - > SearchTerms。 SearchTerms有一个属性isCollapsedView
。
用户可以点击一个视图并导致相应的对象视图折叠,并且此时searchUsed.isCollapsedView的值被更新并保存到moc中。我已经证实,这是发生。
我希望这个改变能被提取的结果控制器识别,然后委托方法会触发,但它们不会。
委托方法在插入,删除或更新搜索实体时触发。
我是否有这个设置错误,或者我的期望错误?我能做些什么呢?
是的,这将遵循我描述的行为。有点可笑,但我想这是你可以采取的一种方法。 – gschandler 2012-07-23 05:27:57