J'ai un NSMutableArray
qui contient quelques objets NSString
. Comment puis-je tester si le tableau contient un littéral de chaîne particulier?
J'ai essayé [array containsObject:@"teststring"]
mais cela ne fonctionne pas.
J'ai un NSMutableArray
qui contient quelques objets NSString
. Comment puis-je tester si le tableau contient un littéral de chaîne particulier?
J'ai essayé [array containsObject:@"teststring"]
mais cela ne fonctionne pas.
Ce que vous faites devrait bien fonctionner. Par exemple
NSArray *a = [NSArray arrayWithObjects:@"Foo", @"Bar", @"Baz", nil];
NSLog(@"At index %i", [a indexOfObject:@"Bar"]);
Enregistre correctement "à l'index 1" pour moi. Deux faiblesses possibles:
indexOfObject
envoie isEqual
messages pour faire la comparaison - vous n'avez pas remplacé cette méthode dans une catégorie? NSNotFound
pour l'échec de la localisation, et non (par exemple) 0. La comparaison avec les littéraux de chaîne ne fonctionne que dans les exemples de code. Dans le monde réel, il est souvent nécessaire de comparer les instances NSString * dans un tableau par exemple. Dans ce cas, conteObject échoue car il se compare à l'objet et non à la valeur.
Vous pouvez ajouter une catégorie à votre implémentation qui étend NS (Mutable) Array avec une méthode pour vérifier si elle contient la chaîne (ou tout autre type avec lequel vous devez comparer).
@implementation NSMutableArray (ContainsString)
-(BOOL) containsString:(NSString*)string
{
for (NSString* str in self) {
if ([str isEqualToString:string])
return YES;
}
return NO;
}
@end
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.