supprimer les doublons du tableau dans l'objectif c
J'ai un tableau avec des objets personnalisés. Chaque tableau a un champ nommé "nom". Maintenant, je veux supprimer les doublons d'articles sur la base de cette valeur de nom.
Comment dois-je aller sur la réalisation de ce.
Merci d'avance.
source d'informationauteur Asad Khan
Vous devez vous connecter pour publier un commentaire.
Vous pourriez avoir à écrire de cette méthode de filtrage vous-même:
Je ne connais pas de méthode standard pour faire fournis par les cadres. De sorte que vous aurez à faire dans le code. Quelque chose comme cela devrait être faisable:
Je sais que c'est une vieille question, mais voici une autre possibilité, en fonction de ce que vous avez besoin.
Apple fournit un moyen de le faire -- Valeur-Clé De Codage De Collecte Des Opérateurs.
Objet opérateurs vous permettent d'agir sur une collection. Dans ce cas, vous souhaitez:
@distinctUnionOfObjects
NSArray *distinctArray = [arrayWithDuplicates
valueForKeyPath:@"@distinctUnionOfObjects.name"];
Dans votre cas, cependant, vous voulez l'ensemble de l'objet. Donc, ce que vous avez à faire est de deux ordres:
1) Utiliser
@distinctUnionOfArrays
à la place. E. g. Si vous avez personnalisé des objets provenant d'autres collections, utilisez@distinctUnionOfArray.myCollectionOfObjects
2) mettre en Œuvre
isEqual:
sur ces objets de revenir si leur .nom de l'égalitéJe vais me faire flak pour cette...
Vous pouvez convertir votre tableau dans un dictionnaire. Vous ne savez pas comment efficace, c'est, dépend de la mise en œuvre et la comparaison d'appel, mais il le fait d'utiliser un hachage de la carte.
*Veuillez noter que ceci peut changer l'ordre de votre tableau.
Si vous souhaitez que votre personnalisé NSObject des sous-classes pour être considérés comme identiques lorsque leurs noms sont égales vous pouvez mettre en œuvre
isEqual:
ethash
. Cela vous permettra d'ajouter des objets à unNSSet
/NSMutableSet
(un ensemble d'objets distincts).Vous pouvez créer facilement une triés
NSArray
en utilisantNSSet
'ssortedArrayUsingDescriptors:
méthode.MikeAsh a écrit un bon article sur la mise en œuvre personnalisée de l'égalité: Vendredi Q&Un 2010-06-18: la mise en Œuvre de l'Égalité et de Hachage
Si vous êtes inquiet au sujet de la commande
Mettre en œuvre isEqual à vos objets comparables:
Comment utiliser:
C'est assez simple en une seule ligne