2010-10-07 9 views

Répondre

0
NSString* firstLetter; 

for(NSString* currentString in yourArray) 
{ 
    firstLetter = [NSString stringWithFormat:@"%c", [currentString characterAtIndex:0]]; 
    if([firstLetter isEqualToString:@"c"]) 
    { 
      // NAME OK 
    } 
    else 
    { 
     // NAME WRONG 
    } 
} 
+0

Pourquoi le% d ?? Avez-vous essayé cela? –

+0

Oops c'est une erreur! Édité – MathieuF

+1

Ceci est très inefficace. Il crée une nouvelle chaîne formatée pour chaque élément de 'yourArray' et effectue une comparaison de chaînes. – rpetrich

3

Une autre façon de le faire est avec enumerateObjectsUsingBlock:

[yourArray enumerateObjectsUsingBlock:^(id name,NSUInteger idx,BOOL *stop) { 
    if ([name characterAtIndex:0] == 'c') { 
      NSLog(@"Name begins with c: %@",name); 
    } 
}]; 

(et notez également que vous voulez tester pour « C », en plus de « c » si votre entrée n'est pas tout en minuscules

+0

+1. Je suis intéressé pourquoi vous avez choisi une énumération de bloc plutôt qu'une boucle for. Préférence personnelle ou raison particulière? –

+0

Si vous voulez arrêter la recherche lorsque vous frappez le premier match, c'est plus facile à faire avec un bloc (* stop = true) qu'avec une énumération rapide 'for ... in'. La construction du bloc facilite également la parallélisation de l'opération si vous le souhaitez (en utilisant l'option 'NSEnumerationConcurrent' sur' - [NSArray enumerateObjectsWithOptions: usingBlock:] '). –

+0

Il donne également un accès facile à l'index de l'objet, ce qui prend un peu plus de travail lors de l'utilisation de l'énumération rapide. – Abizern