核心数据:查找按属性过滤的实体,具有唯一的第二属性

时间:2012-04-08 12:33:48

标签: iphone objective-c ios core-data nspredicate

我有一个实体Detail,其中包含两个属性:titletext。其中有许多是重复的,因为它们被分配给另一个实体的许多实例作为关系。

对于给定的text,我需要所有唯一的title s。所以首先我创建一个合适的谓词:

NSPredicate *predicate = [NSPredicate predicateWithFormat:
   @"title = %@", aTitle]; 

如何将结果数组减少为仅包含唯一text条目的数组?

我可以以某种方式仍然使用我的fetchedResultsController在表格视图中显示这些,或者我是否必须创建一个单独的数组作为数据源?我担心我会遇到像这样的记忆问题。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这样的东西可能与valueForKeypath一起使用:

    NSDictionary * dict00 = [NSDictionary dictionaryWithObject:@"hat" forKey:@"key"];
    NSDictionary * dict01 = [NSDictionary dictionaryWithObject:@"bag" forKey:@"key"];
    NSDictionary * dict02 = [NSDictionary dictionaryWithObject:@"shirt" forKey:@"key"];
    NSDictionary * dict03 = [NSDictionary dictionaryWithObject:@"hat" forKey:@"key"];
    NSDictionary * dict04 = [NSDictionary dictionaryWithObject:@"hat" forKey:@"key"];

    NSMutableArray * array = [NSMutableArray arrayWithCapacity:5];
    [array addObject:dict00];
    [array addObject:dict01];
    [array addObject:dict02];
    [array addObject:dict03];
    [array addObject:dict04];

    NSArray * deDupedArray = [array valueForKeyPath:@"@distinctUnionOfObjects.key"];
    NSLog(@"%@",deDupedArray);