我在Objective-C中使用常量变量的switch语句遇到了问题。
我有一个名为Constants.h的文件,内容如下:
// Constants.h
extern NSInteger const TXT_NAME;
并且 Constants.m 如下:
// Constants.m
#import "Constants.h"
NSInteger const TXT_NAME = 1;
接下来在TabBasic.m中,我正试图在一个switch-case语句中使用这个常量:
// TabBasic.m
#import "TabBasic.h"
#import "Constants.h"
... code ...
- (IBAction)saveValue:(id)sender {
if ([sender isKindOfClass: [UITextField class]]) {
UITextField *txtField = (UITextField *) sender;
switch (txtField.tag) {
case TXT_NAME:
NSLog(@"Set property name to: %@", txtField.text);
break;
}
}
}
但不幸的是,在"case TXT_NAME:"这一行上,它给了我以下两个错误:
- 表达式不是整数常量表达式
- Case标签不能简化为整数常量
有人知道我做错了什么吗?一个UITextField的"tag"变量返回一个NSInteger,所以我不明白问题在哪里...
谢谢你的帮助!
if
语句中的==
测试不需要在编译时知道常量。而case:
则需要一个编译时常量值。 - Thomas