我有以下代码段:
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;
}
输出:错误!
我的预期结果是:记录“错误!”未打印
为什么会这样?我该如何解决这个问题?我感谢您的支持。提前致谢。
问题出在kCmdWarningSSLException
值是整数:-100
发生切换时,它尝试查找值:4294967196(在将整数-100存储在无符号整数中时发生),原因是NSUInteger
无法存储-ve值,并且它是无符号整数。
要将此更改从NSUInteger cmdWarning
更改为NSInteger cmdWarning =
,并切换到适当的大小写并输出“错误!”]