De-dupe NSArray из NSDictionaries на основе определенных ключей - PullRequest
0 голосов
/ 21 октября 2010

Я пытаюсь дедуплицировать NSArray из NSDictionaries на основе определенных ключей в словарях. Что у меня выглядит примерно так:

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

Обратите внимание, что два сотрудника с одинаковыми именами, но разными идентификаторами. То, что я хотел бы сделать, это просто вернуть новый массив только с person1 и person2, так как person3 имеет одинаковые данные - мне просто наплевать на значение employeeID в этой конкретной проблеме.

Есть идеи? Спасибо!

Матф

Ответы [ 2 ]

5 голосов
/ 21 октября 2010

Добавьте класс Person, который наследуется от NSDictionary и реализует isEqual: игнорируя ключ ID, приведите свои словари к этому классу, а затем создайте NSSet из ваших объектов Person.

0 голосов
/ 21 октября 2010

В этом самом случае я бы создал временный NSMutableDictionary и добавил бы каждый словарь personX в качестве объекта и его значение "firstName" в качестве ключа. Таким образом, словарь personX будет заменен, если во временный список будет добавлен другой personX с тем же именем. Затем получите массив из временного словаря с -allValues ​​.

...