Je ne connais pas de méthode intégrée pour ce faire. Cependant, il serait trivial d'écrire une catégorie sur NSArray qui fait cela:
@interface NSArray (CaseInsensitiveIndexing)
- (NSUInteger)indexOfCaseInsensitiveString:(NSString *)aString;
@end
@implementation NSArray (CaseInsensitiveIndexing)
- (NSUInteger)indexOfCaseInsensitiveString:(NSString *)aString {
NSUInteger index = 0;
for (NSString *object in self) {
if ([object caseInsensitiveCompare:aString] == NSOrderedSame) {
return index;
}
index++;
}
return NSNotFound;
}
@end
Bien sûr, vous voudrez probablement faire un peu de vérification de type pour vous assurer que les éléments du tableau fait sont NSStrings avant vous appelez -caseInsensitiveCompare:
, mais vous avez l'idée.
Merci Matt. C'est à peu près ce que j'ai fait, mais juste dans une fonction locale. Je suis assez nouveau à ObjC alors pardonnez mon ignorance, mais y a-t-il un avantage à la façon dont vous avez itéré le tableau vs un simple "for (NSUInteger i = 0; i
Non, les deux approches sont bien. J'ai tendance à faire les choses de cette façon, puisque certains compilateurs (ou même certains modes de certains compilateurs) n'autorisent pas la déclaration de variables dans la boucle for. Puisque vous ne pouvez jamais être sûr des drapeaux que les gens transmettent à leurs compilateurs, j'essaye de m'assurer que tout code que je poste ici devrait compiler pour tout le monde. –