2011-05-26 1 views
3

J'ai plusieurs combinaisons de chaînes que je veux que mon adresse isEqualtoString trouve automatiquement. À l'heure actuelle, toutes les combinaisons sont recherchées manuellement.isEqualToString Combinations

if([aString isEqualToString:@"xyz"] || [aString isEqualToString:@"zxy"] || [aString isEqualToString:@"yzx"] || [aString isEqualToString:@"xzy"] etc...){} 

Répondre

4

Si vous voulez juste savoir si l'un d'entre eux correspondent, vous pouvez mettre tous vos candidats (xyz, ZXY, ...) dans un NSArray et appelez containsObject:aString sur le tableau. Utilisez indexOfObject:aString si vous avez besoin de savoir quelle chaîne a été trouvée.

+0

Merci pour la réponse! Cela semble beaucoup plus simple, et j'aime bien. – evdude100

4

Vous pouvez écrire une catégorie NSString qui fait le travail:

@interface NSString (isEqualToAnyStringAddition) 
- (BOOL)isEqualToAnyString:(NSString *)firstString, ... NS_REQUIRES_NIL_TERMINATION; 
@end 

@implementation NSString (isEqualToAnyStringAddition) 

- (BOOL)isEqualToAnyString:(NSString *)firstString, ... 
{ 
    if([self isEqualToString:firstString]) 
     return YES; 


    va_list arguments; 
    va_start(arguments, firstString); 

    NSString *string; 

    while((string = va_arg(arguments, NSString *))) 
    { 
     if([self isEqualToString:string]) 
     { 
      va_end(arguments); 
      return YES; 
     } 
    } 

    va_end(arguments); 
    return NO; 
} 

@end 
+0

Merci pour ça. Si jamais je deviens un dev hardcore et que j'essaie d'améliorer mon apparence de code, je l'utiliserai^_ ^. En attendant, je pense que containsObject fonctionnerait plus facilement .. – evdude100

Questions connexes