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

#ios #objective-c #nsstring

#iPhone #objective-c #xcode #nsstring #nsarray

Вопрос:

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

Ответ №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 , если вам все равно, это фактически тот же объект (т. Е. Тот же адрес).

Источник: