1

所以假设我有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]];

谢谢!

4

1 回答 1

5
NSMutableDictionary *uniqueObjects = [NSMutableDictionary dictionaryWithCapacity:allObjects.count];
for (NSDictionary *object in allObjects) {
    [uniqueObjects setObject:object forKey:object[@"name"]];
}
于 2013-06-28T01:19:21.670 回答