首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Objective-C可以打开NSString吗?

Objective-C可以打开NSString吗?
EN

Stack Overflow用户
提问于 2011-11-17 11:26:18
回答 12查看 102.1K关注 0票数 172

有没有一种更聪明的方法来重写这个?

代码语言:javascript
复制
if ([cardName isEqualToString:@"Six"]) {
    [self setValue:6];
} else if ([cardName isEqualToString:@"Seven"]) {
    [self setValue:7];
} else if ([cardName isEqualToString:@"Eight"]) {
    [self setValue:8];
} else if ([cardName isEqualToString:@"Nine"]) {
    [self setValue:9];
} 
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-11-17 11:30:26

不幸的是,他们不能。这是对switch语句的最好和最受欢迎的利用之一,所以希望他们(现在)能跟上Java (和其他语言)的潮流!

如果您正在使用卡片名称,可能需要为每个卡片对象分配一个整数值,然后打开该值。或者可能是一个枚举,它被认为是一个数字,因此可以被打开。

例如:

代码语言:javascript
复制
typedef enum{
  Ace, Two, Three, Four, Five ... Jack, Queen, King

} CardType;

这样做,Ace将等于case 0,2等于case 1,依此类推。

票数 151
EN

Stack Overflow用户

发布于 2012-04-17 00:26:16

您可以设置块的字典,如下所示:

代码语言:javascript
复制
NSString *lookup = @"Hearts"; // The value you want to switch on

typedef void (^CaseBlock)();

// Squint and this looks like a proper switch!
NSDictionary *d = @{
    @"Diamonds": 
    ^{ 
        NSLog(@"Riches!"); 
    },
    @"Hearts":
    ^{ 
        self.hearts++;
        NSLog(@"Hearts!"); 
    },
    @"Clubs":
    ^{ 
        NSLog(@"Late night coding > late night dancing"); 
    },
    @"Spades":
    ^{ 
        NSLog(@"I'm digging it"); 
    }
};

((CaseBlock)d[lookup])(); // invoke the correct block of code

要创建“默认”部分,请将最后一行替换为:

代码语言:javascript
复制
CaseBlock c = d[lookup];
if (c) c(); else { NSLog(@"Joker"); }

希望苹果能教“切换”一些新的技巧。

票数 123
EN

Stack Overflow用户

发布于 2013-09-10 09:46:43

对我来说,一个很好的简单的方法:

代码语言:javascript
复制
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;
}
票数 82
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8161737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档