实际上,object-c中switch的参数只能是int,byte,char,short的类型。
然而,我们经常要使用到NSString来作为参数,我在这里举例说明一种间接实现的方法。这个方法一眼看上去好像不灵活限制了NSString参数的个数,但话说回来,既然用到了switch...case那么,所要传入的参数应该是有限和已知的。
//把用到的字符串参数放到一个数组里
NSArray *aName =
//比如我们要把@"stormer"作为switch的参数,则取到它在数组中的下标,然后在switch中根据下标来进行处理。
int index = [aName
--------
int index = [diindexOfObject: inputValue];
--------
switch(index)
{
case 0: //xxxxx; break;
case 1: //xxxxx; break;
case 2: //xxxxx; break;
case 3: //xxxxx; break;
case 4: //这里就是stormer的代码处理部分; break;
case 5: //xxxxx; break;
....
}
------------
更清晰的:
NSString *theString = @"item3"; // The one we want to switch on
NSArray *items = @[@"item1", @"item2", @"item3"];
int item = [items indexOfObject:theString];
switch (item) {
case 0:
// Item 1
break;
case 1:
// Item 2
break;
case 2:
// Item 3
break;
default:
break;
}