Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将NSString与一组字符串进行比较的更快/更简单的方法_Iphone_Objective C_Cocoa - Fatal编程技术网

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

Iphone 将NSString与一组字符串进行比较的更快/更简单的方法,iphone,objective-c,cocoa,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 } 如果([elementName isEqual:@“一”]){ //做点什么 } 如果(

在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 } 如果([elementName isEqual:@“一”]){ //做点什么 } 如果([elementName isEqual:@“two”]]{ //多做事 } 如果([elementName isEqual:@“三”]]{ //多做事 } 理想情况下,我想要的是:

//BAD CODE, NOT REAL!!! switchString(elementName){ @"one": // do stuff break; @"two": // do more stuff break; @"three": // do more stuff break; } //糟糕的代码,不是真的!!! switchString(elementName){ @“一”: //做事 打破 @“二”: //多做事 打破 @“三”: //多做事 打破 }
不,您这样做是正确的,除非我使用:

[elementName isEqualToString:@"one"]

再简洁一点

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
存储在字典中,然后使用元素名作为键拉出调用如果您告诉我们您真正想要做什么,我们可能会更容易帮助您。打开字符串通常是设计不好的标志…这是在diEndElement(XMLParserDelegate)中方法。这是一种非常酷的方法!另外,我还不知道nsinvocation看起来很完美!!!
indexofobject-dentialto:
只有在
elementName
是一个常量字符串(即,来自字符串文字)时才会起作用来自同一个实现文件。如果它是由用户输入的、在任意点复制到NSMutableString或从NSMutableString复制的、或从框架中获得的(例如,从
NSLocalizedString
),则它将与(与相同的对象)数组中的任何常量字符串。正确的消息是
indexOfObject:
。另一种方法是使用块:
void(^action)(=[[NSDictionary Dictionary WithObjectsSandKeys:^{/*do thing one*/},@“one”,“do thing two*/},@“two”,nil]objectForKey:elementName];if(action)action();
不是非常优雅,但比
NSInvocation
简单。