加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

目标c – 转换案例NSString目标c

发布时间:2020-12-16 05:29:31 所属栏目:百科 来源:网络整理
导读:参见英文答案 Using an NSString in a switch statement9个 我想用NSString使用case语句 请更改代码以更正代码 NSString *day = @"Wed";switch (day) { case @"Sat": NSlog(@"Somthing..."); break; case @"Sun": NSlog(@"Somthing else..."); break; . . .
参见英文答案 > Using an NSString in a switch statement9个
我想用NSString使用case语句
请更改代码以更正代码
NSString *day = @"Wed";

switch (day) {
    case @"Sat":
        NSlog(@"Somthing...");
        break;

    case @"Sun":
        NSlog(@"Somthing else...");
        break;  
        .
        .
        .
        .

    default:
        break;
}

解决方法

如果你想要一些稍微更智能的调度比一个长的条件列表,你可以使用块的字典:
NSString *key = @"foo";

void (^selectedCase)() = @{
    @"foo" : ^{
        NSLog(@"foo");
    },@"bar" : ^{
        NSLog(@"bar");
    },@"baz" : ^{
        NSLog(@"baz");
    },}[key];

if (selectedCase != nil)
    selectedCase();

如果您有很长的案例列表,并且经常执行此操作,则可能会有一个很小的性能优势.您应该缓存字典,然后(不要忘记复制块).

为了方便和简洁而牺牲易读性,这里是一个适合所有内容到单一语句的版本,并添加了默认情况:

((void (^)())@{
    @"foo" : ^{
        NSLog(@"foo");
    },}[key] ?: ^{
    NSLog(@"default");
})();

我更喜欢前者.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读