【问题标题】:trouble with using switch case使用开关盒的麻烦
【发布时间】:2013-11-18 15:12:24
【问题描述】:

我有以下代码sn-p:

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

输出:错误!

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

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

【问题讨论】:

  • cmdWarning 的值是多少? kNetworkWarningSSLException 的值是多少?
  • kNetworkWarningSSLException 的值是多少?
  • 对不起,我编辑了我的代码
  • cmdWarning 存储在无符号整数中。您的案例陈述使用带符号的值。使用有符号或无符号的值。这会有所帮助。
  • 感谢您的 cmets ,我想我已经从这篇帖子中得到了答案 stackoverflow.com/questions/10304969/…

标签: ios objective-c switch-statement


【解决方案1】:

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

当 switch 发生时,它会尝试查找值:4294967196(当整数 -100 存储在无符号整数中时发生)相同的原因是 NSUInteger 无法存储 -ve 值和它是无符号整数。

要修复此更改 NSUInteger cmdWarningNSInteger cmdWarning = 和 switch 将找到正确的大小写并输出“错误!”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 2020-05-06
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多