从字符串切换typedef枚举类型

时间:2010-08-09 09:20:41

标签: objective-c enums nsstring switch-statement

我正在尝试从属于Obj C中的枚举typedef的字符串中获取值,但我似乎无法将值从NSString中取出。我做的是这样的事情:

typedef enum{
    S,
    M,
    L
} Size;

-(void)function:(NSString *)var{
Size value=[var value];
swicth(value){
  case S:...
  case M:...
  ...
 }
}

编辑: 字符串的内容类似于@“S”@“M”@“L”

我不知道如何才能实现这一目标。

2 个答案:

答案 0 :(得分:2)

假设您知道字符串长度为1,则可以在位置0处打开unichar

switch ([string characterAtIndex:0]) {
case 'S': ...
case 'L': ...
case 'M': ...
}

答案 1 :(得分:0)

字符串包含的内容尚不清楚。是@"S"@"M"还是@"L"?如果是这样,您需要提供自己的Size枚举值的转换。或者你可以在你的方法中使用字符串比较:

if ([var isEqualToString: @"S"]) {
  // ...
} else if ([var isEqualToString: @"M"]) {
  //...
} ...

但是,如果字符串包含其中一个Size条目(例如@"0"@"1"@"2")的数值,则可以使用{{1}方法来做你在问题中写的比较。