[英]How do I enumerate on NSString?
如何枚举 NSString?
我正在尝试做的示例:
enum eCat{
dog,
cat,
mouse,
bunny
};
@interface
@implementation
....
enum eCat Cate;
NSString *yoda = @"mouse";
Cate = [yoda intValue];
NSLog(@"Hello: %d",Cate);
希望结果是
Hello: 2
谢谢
Objective-C 中没有直接支持这种枚举。
相反,创建一个字符串数组并查找一个条目:
static NSArray* enumeration=nil;
if(!enumeration){
enumeration=[[NSArray arrayWithObjects:@"AAA",@"BBB",@"CCC",nil] retain];
}
然后稍后使用它:
NSInteger i=[enumeration indexOfObject:@"BBB"];
/* i is now 1 */
这与您的问题无关,但请不要以大写字母开头变量名,例如您的Cate
。 这违反了 Objective-C 的约定。
您必须自己创建一个映射(字符串→枚举) 。 一种可能性是这样的(免责声明:仅大脑编译):
#define CAT_(a, b) a##b
#define CAT(a, b) CAT_(a, b)
#define E(en) [NSNumber numberWithInt:en], CAT(@, #en),
NSDictionary *mapping = [NSDictionary dictionaryWithObjectsAndKeys:
// ...
E(mouse)
E(bunny)
nil];
NSNumber *result = [mapping objectForKey:@"mouse"];
if (!result) {
// ... oops
} else {
enum eCat cate = [result intValue];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.