Question

Cela ressemble à une question aussi stupide, mais comment puis-je trouver une chaîne dans un NSArray ?

j'ai essayé d'utiliser

[array indexOfObjectIdenticalTo:myString]

mais cela nécessite que l'aiguillon ait la même adresse.

Quelqu'un at-il des conseils sur la façon de procéder?

Était-ce utile?

La solution

Vous voulez la méthode indexOfObject: , qui recherche l'objet en envoyant à chaque objet du tableau un message isEqual: .

Autres conseils

La réponse de Peter est correcte.

Une note supplémentaire; si vous avez des tonnes et des tonnes de chaînes dans le tableau, -indexOfObject: va effectuer une recherche linéaire. Cela peut constituer un goulot d'étranglement des performances pour lequel vous devriez envisager d'utiliser un conteneur différent; un NSSet ou NSDictionary, éventuellement (en fonction de la signification des chaînes).

Un autre piège est de savoir si les chaînes sont toutes relativement similaires et / ou relativement longues.

Évidemment, ne vous souciez pas d'optimiser avant d'avoir utilisé les outils d'analyse pour prouver que vous avez un problème de performances.

Vous pouvez utiliser NSOrderSet comme conteneur. La vue d'ensemble dans la référence de classe NSOrderedSet est présentée ci-dessous:

  

NSOrderedSet et sa sous-classe, NSMutableOrderedSet, déclarent les interfaces de programmation d'une collection d'objets ordonnée.

     

NSOrderedSet déclare l'interface de programmation pour les ensembles statiques d'objets distincts. Vous établissez les entrées d’un ensemble statique lorsqu’il est créé, puis vous ne pouvez plus le modifier. NSMutableOrderedSet, quant à lui, déclare une interface de programmation pour les ensembles dynamiques d’objets distincts. Un ensemble dynamique ou modifiable permet d'ajouter et de supprimer des entrées à tout moment, en allouant automatiquement de la mémoire en fonction des besoins.

     

Vous pouvez utiliser des ensembles ordonnés comme alternative aux tableaux lorsque l'ordre des éléments est important et que le fait de vérifier si un objet est contenu dans l'ensemble est un facteur à prendre en compte - le test de l'appartenance à un tableau est plus lent que le test. pour appartenance à un ensemble.

Visitez http: // developer. apple.com/library/mac/#documentation/Foundation/Reference/NSOrderedSet_Class/Reference/Reference.html

includesObject:

Renvoie une valeur booléenne indiquant si un objet donné est présent dans le tableau.

  • (BOOL) contientObjet: (id) unObjet Paramètres un objet Un objet.

Valeur renvoyée YES si un objet est présent dans le tableau, sinon NO.

Discussion

Cette méthode détermine si un objet est présent dans le tableau en envoyant un message isEqual: à chacun des objets du tableau (et en transmettant un objet comme paramètre à chaque message isEqual:.).

Déclaré dans

NSArray.h

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top