将NSString与一串字符串进行比较的更快/更简单的方法

时间:2010-10-14 00:57:01

标签: iphone objective-c cocoa

在Objective-C中有更好的方法:

if ([elementName isEqual:@"one"]){
   // do some stuff
}
else if ([elementName isEqual:@"two"]]{
   // do more stuff
}
else if ([elementName isEqual:@"three"]]{
   // do more stuff
}

理想情况下,我想要像:


//BAD CODE, NOT REAL!!!

  switchString(elementName){
     @"one":
        // do stuff
        break;
     @"two":
        // do more stuff
        break;
     @"three":
        // do more stuff
        break;
    }

2 个答案:

答案 0 :(得分:7)

更简洁一点

NSArray* array = [NSArray arrayWithObjects:@"one",@"two",@"three",nil];

int index = [array indexOfObject:elementName];

switch (index) {
    case 0:
        break;
    ...
    default:
        // -1 would be not fount      
}

另外,更复杂的方法是将字符串和NSInvocations存储在字典中,并使用元素名称作为键来调出调用。我会这样做,如果“做东西”部分更多是范围内的几行

答案 1 :(得分:1)

除非我使用:

,否则你没有正确地做到这一点
[elementName isEqualToString:@"one"]