根据特定密钥对NSDictionaries的NSArray进行重复数据删除

时间:2010-10-21 16:31:32

标签: iphone objective-c nsarray nsdictionary deduplication

我试图根据词典中的特定键来删除NSArray的NSArray。我看起来像这样:

NSDictionary *person1 = [NSDictionary dictionaryWithObjectsAndKeys:@"John", @"firstName", @"Smith", "lastName", @"7898", @"employeeID"];
NSDictionary *person2 = [NSDictionary dictionaryWithObjectsAndKeys:@"Eric", @"firstName", @"Johnson", "lastName", @"1718" @"employeeID"];
NSDictionary *person3 = [NSDictionary dictionaryWithObjectsAndKeys:@"John", @"firstName", @"Smith", "lastName", @"1153", @"employeeID"];

NSMutableArray *personArray = [NSArray arrayWithObjects:person1, person2, person3, nil];

// insert some code to de-dupe personArray based SOLELY on the firstName and lastName keys

请注意,有两名员工姓名相同但ID不同。我想要做的只是回到一个只有person1和person2的新数组,因为person3具有相同的数据 - 我只是不关心这个特定问题中的“employeeID”值。

有什么想法吗?谢谢!

-Matt

2 个答案:

答案 0 :(得分:5)

添加一个继承自NSDictionary的Person类并实现isEqual:忽略ID键,将字典转换为此类,然后从Person对象创建一个NSSet。

答案 1 :(得分:0)

在这种情况下,我将创建一个临时的NSMutableDictionary,并将每个personX字典添加为对象,并将其“firstName”的值添加为键。这样,如果将另一个具有相同名称的personX添加到临时字符,则会替换personX字典。然后使用 -allValues 从临时字典中获取数组。