【发布时间】:2011-12-30 23:54:27
【问题描述】:
有没有更聪明的方法来重写这个?
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];
}
【问题讨论】:
-
不,开关仅适用于 int/bool/char/etc 类型。
-
这个问题和一个小时前发布的这个问题有点相似(stackoverflow.com/questions/8161319/…)
-
有几种替代方法可以做到这一点。例如,加载一个包含值的数组并在数组中搜索匹配项。没有一个非常有效,但它们确实减少了代码重复。
-
附带说明一下,Apple 的新语言 (Swift) 现在允许在 switch 语句中比较字符串!
-
切换到 Swift ;)
标签: objective-c switch-statement