我用这段代码设置我的常量
// Constants.h
extern NSInteger const KNameIndex;
// Constants.m
NSInteger const KNameIndex = 0;
Run Code Online (Sandbox Code Playgroud)
在导入Constant.h文件的文件中的switch语句中,我有:
switch (self.sectionFromParentTable) {
case KNameIndex:
self.types = self.facilityTypes;
break;
...
Run Code Online (Sandbox Code Playgroud)
我在编译时遇到错误:"错误:case标签不会减少为整数常量"
什么想法可能搞砸了?
我想使用以下表达式
-(void)SwitchCondn{
int expression;
int match1=0;
int match2=1;
switch (expression)
{
case match1:
//statements
break;
case match2:
//statements
break;
default:
// statements
break;
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了

当我研究我发现
In order to work in Objective-C, you should define your constant either like this:
#define TXT_NAME 1
Or even better, like this:
enum {TXT_NAME = 1};
Run Code Online (Sandbox Code Playgroud)
我很久以来一直在使用这种方法.现在我的变量值将在运行时改变,所以我需要以其他方式定义,我不想使用if else所以有任何方式的声明变量其他方式
我接受了以下研究
为什么我不能在Objective-C中的switch-case语句中使用我的常量?[error = Expression不是整数常量表达式]