Comparer une string avec une liste dans un Array

VeillardVeillard Membre
23:18 modifié dans API AppKit #1
Bonjour,

Je cherche la solution la plus élégante pour comparer une string d'un TextField avec une liste contenue dans un array. L'idéal serait de retourner un BOOL en fonction du résultat (ex. si elle est inconnue => NO).

J'ai bien qq chose, mais ce n'est pas très OO.  :(

Réponses

  • 23:18 modifié #2
    Il exise une fonction bool containsObject dans NSArray.

    Sur une string elle sera équivalent à  un isEqualToString sur tout les éléments s'arrêtantau premier trouvé.

    BOOL b=[array containsObject:[textField stringValue]]
  • mpergandmpergand Membre
    23:18 modifié #3
    Salut,

    Avec NSArray tu as plusieurs méthodes intéressantes comme:
    indexOfObject
    indexOfObjectIdenticalTo
    containsObject

    qui devraient t'aider ;)
  • VeillardVeillard Membre
    23:18 modifié #4
    OK merci, je vais essayer.
    Au fait, tant que j'y suis, je veux trier mon tableau de strings après l'ajout d'un item. J'ai essayé ceci :
    [tableauDesLieus sortUsingSelector:@selector(compare:)];<br />
    

    Existe-t-il d'autres selectors que "compare:" ?
  • décembre 2004 modifié #5
    Tu peux mettre ce que tu veux.
    Dans le cas d'une NSString tu dois mettre dans une catégorie NSString (ajoute d'une méthode (selector) à  la classe)

    - (NSComparisonResult)compareByValueDescending:(NSString*)other<br />{<br />if (i==j)<br />	return NSOrderedSame;<br />else if (i&lt;j)<br />	return NSOrderedDescending;<br />else<br />	return NSOrderedAscending;<br />}
    



    Dans une fonction (sans catégorie) :

    [array sortUsingFunction:sortStringArray context:nil];<br /><br />int sortStringArray(NSString *s1, NSString *s2, void *context)<br />{<br />return [s1 caseInsensitiveCompare:s2];<br />}
    


    Je crois que l'une est plus rapide que l'autre...

    J'arrête pour aujourd'hui
Connectez-vous ou Inscrivez-vous pour répondre.