Положите свои строки в 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 (log n). Ничего страшного для 15 элементов, но, как правило, словарь или набор, скорее всего, будут работать лучше. Есть о чем подумать, если вы будете много заниматься поиском / сравнением.
EDIT
Как я уже говорил, NSSet
также выполнит поиск за 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
экземпляры создаются намного дольше. Но тогда вам нужно сделать это только один раз, верно?