使用开关盒的麻烦

时间:2013-11-07 04:32:38

标签: ios objective-c switch-statement

请帮帮我。我有以下代码段:

     NSUInteger cmdWarning = [(NSNumber*)responseObject[kCmdResponseWarning] unsignedIntegerValue];
    // this time cmdWarning has value 4294967196

     switch (cmdWarning) {
           //I defined #define kCmdWarningSSLException          -100                   
                  case kCmdWarningSSLException:
                      NSLog(@"error!");
                      break;
                   default: 
                      break;
                 }

    **Output:**
            error!

我的预期结果是:记录“错误!”没有打印

为什么会这样?我该如何解决这个问题?我感谢您的支持 。提前致谢。

1 个答案:

答案 0 :(得分:0)

问题在于kCmdWarningSSLException值为整数: -100

当切换发生时,它试图找到值: 4294967196 (当整数-100存储在无符号整数时发生)同样的原因NSUInteger无法存储-ve值,它是无符号整数。

要将此更改NSUInteger cmdWarning修复为NSInteger cmdWarning =,交换机将找到正确的案例并输出“错误!”