Положите ваши строки в NSDictionary
:
NSNull *nullValue = [NSNull null];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:nullValue, nullValue, ..., nil forKeys:@"Box", @"Ball", ..., nil];
if ([dictionary objectForKey:var]) {
// var matches one of the keys, run function
}
else {
// var doesn't match any of the keys, do something else
}
словарь поиски являются O (1), в то время как поиск массив, вероятно, O (журнал N). Не очень важно для 15 элементов, но, как правило, словарь или набор, скорее всего, будут работать лучше. Что-то, о чем нужно подумать, если вы много делаете для этого поиска/сравнения.
EDIT
Как я уже говорил, NSSet
также будет делать Lookups в O (1) Время:
NSSet *comparisonSet = [NSSet setWithObjects:@"Box", @"Ball", ..., nil];
if ([comparisonSet containsObject:var]) {
// var matches set object, run function
}
else {
// var doesn't match any of the set objects, do something else
}
чистого кода, безусловно, но я думаю, что NSSet
случаи занять гораздо больше времени, чтобы создать , Но тогда вам нужно сделать это один раз, верно?
Вместо использования словаря с нулевыми значениями, возможно, лучше подходит «NSSet». – Hugh
Кроме того, вы должны использовать 'objectForKey:' вместо 'valueForKey:' с 'NSDictionary'. Для 'NSSet' используйте' containsObject: '. – jtbandes
Вы правы, я печатаю по памяти. –