nmo*_*ary 11 objective-c switch-statement nsstring
我想使用NSString的case语句请更改我的代码以更正代码
NSString *day = @"Wed";
switch (day) {
case @"Sat":
NSlog(@"Somthing...");
break;
case @"Sun":
NSlog(@"Somthing else...");
break;
.
.
.
.
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
Nik*_*uhe 54
如果你想要一些比一长串条件更聪明的调度你可以使用块字典:
NSString *key = @"foo";
void (^selectedCase)() = @{
@"foo" : ^{
NSLog(@"foo");
},
@"bar" : ^{
NSLog(@"bar");
},
@"baz" : ^{
NSLog(@"baz");
},
}[key];
if (selectedCase != nil)
selectedCase();
Run Code Online (Sandbox Code Playgroud)
如果你有很长的案例列表,并且经常这样做,那么在这方面可能会有很小的性能优势.你应该缓存字典,然后(不要忘记复制块).
为了方便和简洁而牺牲易读性这里是一个适合所有内容的版本,并添加了一个默认案例:
((void (^)())@{
@"foo" : ^{
NSLog(@"foo");
},
@"bar" : ^{
NSLog(@"bar");
},
@"baz" : ^{
NSLog(@"baz");
},
}[key] ?: ^{
NSLog(@"default");
})();
Run Code Online (Sandbox Code Playgroud)
我更喜欢前者.
| 归档时间: |
|
| 查看次数: |
22863 次 |
| 最近记录: |