我想在交换机内使用if语句,但我不断得到预期的表达式错误。如果有人能帮助我解决这个问题,我将不胜感激。
switch ([ApplicationModel getApplicationType]) {
case CSApplication: {}
break;
case RAApplication:
{
if (indexPath.row == FloorLevelIndex || indexPath.row == RoomIndex)
{
[cell setUserInteractionEnabled: YES];
}
}
break;
default:
break;
}
答案 0 :(得分:3)
如果FloorLevelIndex
和RoomIndex
是类型,您将无法将数字与类型进行比较(因此错误)。您可能需要这些数字表示或使用NSInteger
值
答案 1 :(得分:1)
确保[ApplicationModel getApplicationType]返回swtich案例支持的有效数据类型。
switch语句中使用的变量只能是整数, 可转换整数(byte,short,char),字符串和枚举
应该是这样的:
switch ([ApplicationModel getApplicationType]) {
case CSApplication:
break;
case RAApplication:
if (indexPath.row == FloorLevelIndex || indexPath.row == RoomIndex)
{
[cell setUserInteractionEnabled: YES];
}
break;
default:
break;
}
答案 2 :(得分:0)
我刚刚在我的Xcode中尝试了这个代码,它运行正常:
NSLayoutAttribute attr = NSLayoutAttributeLeft;
switch (attr) {
case NSLayoutAttributeTop: {}
break;
case NSLayoutAttributeLeft: {
if (YES) {
NSLog(@"works");
}
}
break;
default:
break;
}
所以switch语句的结构是正确的。