我想在NSString中使用case语句 请更改我的代码以更正代码
NSString *day = @"Wed";
switch (day) {
case @"Sat":
NSlog(@"Somthing...");
break;
case @"Sun":
NSlog(@"Somthing else...");
break;
.
.
.
.
default:
break;
}
答案 0 :(得分:53)
如果你想要一些比一长串条件更聪明的调度,你可以使用块字典:
NSString *key = @"foo";
void (^selectedCase)() = @{
@"foo" : ^{
NSLog(@"foo");
},
@"bar" : ^{
NSLog(@"bar");
},
@"baz" : ^{
NSLog(@"baz");
},
}[key];
if (selectedCase != nil)
selectedCase();
如果你有很长的案例清单并经常这样做,那么这可能会有很小的性能优势。你应该缓存字典,然后(不要忘记复制块)。
为了方便和简洁而牺牲易读性这里是一个适合所有内容的版本,并添加了一个默认案例:
((void (^)())@{
@"foo" : ^{
NSLog(@"foo");
},
@"bar" : ^{
NSLog(@"bar");
},
@"baz" : ^{
NSLog(@"baz");
},
}[key] ?: ^{
NSLog(@"default");
})();
我更喜欢前者。
答案 1 :(得分:2)
Switch
语句不适用于NSString,只能使用整数。使用if else
:
NSString *day = @"Wed";
if([day isEqualToString:@"Sat"]) {
NSlog(@"Somthing...");
}
else if([day isEqualToString:@"Sun"]) {
NSlog(@"Somthing...");
}
...