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

标签 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;
    }

最佳答案

简洁一点

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

int index = [array indexOfObject:elementName];

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

另一种稍微复杂一点的方法是将字符串和 NSInitations 存储在字典中,并使用元素名称作为键来提取调用。如果“do stuff”部分的范围超过几行,我会这样做

关于iphone - 将 NSString 与一堆字符串进行比较的更快/更简单的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3929263/

相关文章:

objective-c - isEqualTo : and isEqual:之间的区别

ios - 在相机上捕获屏幕

iphone - AFNetworking 将 POST 参数编码为 JSON?

ios - NSURLConnection didSendBodyData 进度

objective-c - 如何在菜单栏中使用从 Nib 加载的自定义 NSView

macos - 将 RTF 文件与 Cocoa 合并

ios - WhatsApp 类似于 iOS 应用程序中的位置共享

iphone - 在单例中设置字典导致 EXC_BAD_ACCESS

iPhone CFSocket 传入/传出消息

iphone - 基本的 CCArray 理解