我认为这会起作用,但我不确定为什么我做错了。我有一个使用以下代码中的谓词获取的结果控制器:
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。我已经证实这正在发生。
我希望获取的结果控制器能够识别此更改,然后委托方法会触发,但它们不会。
插入、删除或更新搜索实体时会触发委托方法。
是我设置错了,还是我的期望错了?我能做些什么呢?