는 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는 아마 반면 O (1), (로그 n)이다. 15 요소에 대해서는 큰 문제가 아니지만 일반적으로 사전 또는 세트가 더 잘 수행됩니다. 당신이이 검색/비교를 많이한다면 뭔가 생각할 것입니다.
편집
가 나는 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
인스턴스를 만드는 데 훨씬 더 오래 걸릴 생각 . 하지만 한 번만해야합니다. 맞죠?
null 값을 갖는 사전을 사용하는 대신, 아마도 'NSSet'이 더 적합 할 것입니다. – Hugh
또한'NSDictionary'와 함께'valueForKey :'대신'objectForKey :'를 사용해야합니다. NSSet의 경우,'containsObject :'를 사용하십시오. – jtbandes
네 말이 맞아, 나는 기억에서 타이핑하고있어. –