【问题标题】:NSArray of NSDictionaries - filtering by dictionary value and return unique array objectNSDictionaries 的 NSArray - 按字典值过滤并返回唯一的数组对象
【发布时间】:2013-06-28 00:52:49
【问题描述】:

所以假设我有一个 NSArray 填充了数百个 NSDictionary 对象。

所有字典对象都有一个键 name 的值,但这些值的名称可能在不同的对象中出现多次。

我需要能够过滤这个 NSArray,以便每个唯一的 name 属性只返回一个对象(无论哪个对象,第一个或最后一个,我不在乎)。

这是我已经走了多远,但显然我的 filtered 数组包含所有对象,而不仅仅是唯一的对象。

我在想一定有办法告诉谓词将其结果限制为只有一个/第一个匹配?

NSArray *allObjects = ... // This is my array of NSDictionaries                                                                                              
NSArray *uniqueNames = [allObjects valueForKeyPath:@"@distinctUnionOfObjects.name"];
NSArray *filtered = [allObjects filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(self.name IN %@)", uniqueNames]];

谢谢!

【问题讨论】:

    标签: objective-c nsarray nsdictionary


    【解决方案1】:
    NSMutableDictionary *uniqueObjects = [NSMutableDictionary dictionaryWithCapacity:allObjects.count];
    for (NSDictionary *object in allObjects) {
        [uniqueObjects setObject:object forKey:object[@"name"]];
    }
    

    【讨论】:

      猜你喜欢
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多