Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

NSArray* yourArray = [NSArray arrayWithObjects: @"Str1", @"Str2", @"Str3", nil];
if ( [yourArray containsObject: yourStringToFind] ) {
    // do found
} else {
    // do not found
}

Ответ 2

Итерация или 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]);   

Ответ 3

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

Источник: