Как я могу проверить, является ли конкретная 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
, если вам действительно нужен тот же объект (т.е. Тот же адрес).
Источник: