2010-08-09 90 views
2

我试图从一个属于枚举typedef在Obj C中的字符串获取值,但我似乎不能将值从NSString中转移出来。 I'me做这样的事情:从字符串的typedef枚举类型切换

typedef enum{ 
    S, 
    M, 
    L 
} Size; 

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

编辑: 字符串的内容将BR像@ “S” @ “M” @ “L”

我不明白怎么能我完成了这个。

回答

0

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

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

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

+0

对不起,我就不清楚了字符串的内容,是的,他们会@“S”@“M”@“L”,如果使用其他方法将会破坏使用开关的目的。 – 2010-08-09 09:34:39

2

假设你知道字符串是一个长度,你可以在位置上的unichar切换0

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