Как я могу проверить, присутствует ли конкретный NSString в NSArray? - PullRequest
20 голосов
/ 13 сентября 2011

Как я могу проверить, является ли конкретная строка NSSt преснетом в NSArray?

Ответы [ 3 ]

45 голосов
/ 13 сентября 2011

Вы можете сделать это, как,

NSArray* yourArray = [NSArray arrayWithObjects: @"Str1", @"Str2", @"Str3", nil];
if ( [yourArray containsObject: yourStringToFind] ) {
    // do found
} else {
    // do not found
}
6 голосов
/ 13 сентября 2011

Итерации или containsObject - это порядок n способов поиска.

Если вам нужен постоянный поиск по времени, вы можете также поддерживать хеш-таблицу, такую ​​как NSSet или NSHashTable, но это увеличивает пространство, но экономит время.

NSArray* strings = [NSArray arrayWithObjects: @"one", @"two", @"three", nil];
NSSet *set = [NSSet setWithArray:strings];

NSString* stringToFind = @"two";
NSLog(@"array contains: %d", (int)[strings containsObject:stringToFind]);
NSLog(@"set contains: %d", (int)[set containsObject:stringToFind]);   
1 голос
/ 13 сентября 2011

Зависит от ваших потребностей. Либо indexOfObject, если вы заботитесь о равенстве (скорее всего), либо indexOfObjectIdenticalTo, если вам небезразлично, это на самом деле один и тот же объект (т.е. тот же адрес).

Источник:

...