Je tente de dé-dupe un NSArray de NSDictionaries basé sur des clés spécifiques dans les dictionnaires. Ce que j'ai ressemble à quelque chose comme ceci:De-dupe NSArray de NSDictionaries basé sur des clés spécifiques
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
Notez comment il y a deux employés avec le même nom mais différents ID. Ce que je voudrais faire, c'est juste récupérer un nouveau tableau avec seulement person1 et person2, puisque person3 a les mêmes données - je ne me soucie pas de la valeur "employeeID" dans ce problème particulier.
Des idées? Merci!
-Matt
J'apprécie votre réponse rapide! Je pense que cela fonctionnerait bien dans ce cas, le seul problème, que j'ai oublié de préciser, c'est que j'ai affaire à plusieurs milliers d'objets de la personne. Votre méthode fonctionne, même si je ne suis pas certain de son évolutivité. – mag725
Je peux me tromper, mais il est compris par moi que NSDictionary se comporte la plupart du temps comme carte de hachage, avec temps d'insertion amorti de O (1). Initialiser le dictionnaire avec une capacité proportionnelle au nombre attendu d'entrées uniques pour éviter un ressassement excessif et le tester. La mémoire ne devrait pas non plus poser de problème, car ce que vous insérez est en fait une référence. Si vous avez beaucoup d'entrées et que vous continuez à les récupérer et à les manipuler, peut-être que Core Data répondra mieux à vos besoins. – sigsegv