-4

我已经用 if/else 重写了这个,但它困扰着我,希望有人可以教育我。我有以下 switch 语句:

  switch( true )
  {
     case [request.URL.absoluteString isEqualToString:secondMapUrl]:
        return NO;
        break;
     case [request.URL.absoluteString isEqualToString:mapUrl]:
        [self openMapViewController];
        return NO;
     default:
        return YES;
  }

“表达式不是整数常量表达式”失败 - 但这些情况评估为您可以使用的真/假,即。case true:-- 有没有办法让 switch 语句以这种方式工作?

4

2 回答 2

3

编译器需要能够编译结果,其中方法不返回常量(它们返回的动态结果可能是 YES 也可能是 NO)。

“switch”在这种情况下是不合适的。

并且在关键字上做一个“ switch( true )” (它本身是一个常量,并且在编译器支持的某些语言中表示某些东西),我什至不认为这是有效的。如果你真的有一个名为“ ”的变量,你应该把它改成一个更合理的变量名。true

于 2013-06-21T21:47:49.470 回答
0

您不能将这样的字符串与开关进行比较,您只能使用诸如 int/bool/char 之类的常量。如果只有两行这样的行,或者如果你有很多行某种形式的数组和 for 循环来检查,我会这样做。即使您的开关是可能的,开关(真)也必须更改为 request.URL.absoluteString。单词 switch 之后的变量是单词 case 示例之后要检查的东西

switch (my_Int) {
case 0: do something; break; 
case 1: do something else; break;
}
于 2013-06-22T03:40:41.463 回答