Objective c 使用NSFetchedResultsController时是否可能获得不同的结果?

Objective c 使用NSFetchedResultsController时是否可能获得不同的结果?,objective-c,iphone,core-data,nsfetchedresultscontroller,Objective C,Iphone,Core Data,Nsfetchedresultscontroller,我有一个产品搜索,搜索我的产品所在的产品类别,有时我的产品在多个类别中,这会给我重复的结果。我不想直接搜索产品表,因为有几个产品有多种尺寸,但基本上是相同的产品 是否有办法使用NSFetchedResultsController获得不同的搜索结果?您需要使用NSPredicate(请参阅) 这很复杂,但您可以在创建NSFetchRequest时使用子查询来完成它。您可以使用-setReturnsDistinctResults:并将其设置为YESYES您可以 注意这个方法 - (NSFetched

我有一个产品搜索,搜索我的产品所在的产品类别,有时我的产品在多个类别中,这会给我重复的结果。我不想直接搜索产品表,因为有几个产品有多种尺寸,但基本上是相同的产品


是否有办法使用NSFetchedResultsController获得不同的搜索结果?

您需要使用NSPredicate(请参阅)


这很复杂,但您可以在创建
NSFetchRequest
时使用子查询来完成它。您可以使用
-setReturnsDistinctResults:
并将其设置为
YES
YES您可以

注意这个方法

- (NSFetchedResultsController *)fetchedResultsController;
并在此处添加以下行(在本例中,我们仅获得托管对象的独特“title”属性):

您必须注意如何从NSFetchedResultsController访问值。。。例如在

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
使用以下代码访问数据:

NSDictionary* title = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = [title objectForKey:@"title"];

除了Shingoo提供的解决方案外,请不要忘记将NSFetchedResultsController的委托设置为nil,以禁用自动更新,这将不适用于NSDictionaryResultType和不同的值:

self.fetchedResultsController.delegate = nil; 

要使用该选项,还必须设置setResultType:NSDictionaryResultType,而NSFetchedResultsController不设置该选项like@Slee:更准确地说:FRC不支持NSDictionaryResultType.ferdil–您能详细说明您的答案吗?
self.fetchedResultsController.delegate = nil;