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