创建Switch,字符串参数不起作用

时间:2015-01-08 12:08:12

标签: php ios objective-c switch-statement

如何使用accept string参数创建switch语句

-(int)Type:(NSString *)typeName{

    switch (typeName) {
        case @"MEN":
            NSLog(@"MEN");
            break;
        case @"FEMALE":
            NSLog(@"FEMALE");
            break;
        default:
            NSLog(@"FEMALE");
            break;
    }

}

我在php中测试它正常工作

$name = "JHON";

switch ($name) {

case "JHON" :
{
echo "Im JHON";
break;
}

case "KIRAN":
{
echo "Im KIRAN";
break;
}

default:{
echo "Im default";
}

}
?>

接受字符串条件的切换案例不起作用objective-c其错误消息说语句需要表达整数类型。 (NSString _string无效)

3 个答案:

答案 0 :(得分:2)

嗯,你得到的错误有点放弃,切换目标-c只适用于整数,而不是字符串......

答案 1 :(得分:0)

如上所述,您通常不能将switch用于非整数的东西(在最流行的编程语言中,包括Objective-C)。但是,您可以检查this question以获得接近语法的方法,而无需使用if-else。

答案 2 :(得分:0)

Objective C中,您无法在Strings中使用Switch,但您可以使用NSDictionary替代,请查看此stackoverflow link以供参考。因此,从链接中,您的代码可以重写为

typedef void (^CaseBlock)();

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                   ^() { NSLog(@"MEN"); }, @"MEN",
                   ^() { NSLog(@"WOMEN"); }, @"WOMEN",
                   ^() { NSLog(@"MALE"); }, @"MALE",
                   ^() { NSLog(@"FEMALE"); }, @"FEMALE",
                   nil];

CaseBlock c = dict[@"MEN"];
if (c) c(); else { 
   // default: case
   NSLog(@"Female"); 
}