假设我有一个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]];
谢谢!
答案 0 :(得分:5)
NSMutableDictionary *uniqueObjects = [NSMutableDictionary dictionaryWithCapacity:allObjects.count];
for (NSDictionary *object in allObjects) {
[uniqueObjects setObject:object forKey:object[@"name"]];
}