有没有更聪明的方法来重写这个?
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];
}
Run Code Online (Sandbox Code Playgroud) 我正在做一些Objective-C编程,它涉及解析NSXmlDocument并从结果中填充对象属性.
第一个版本看起来像这样:
if([elementName compare:@"companyName"] == 0)
[character setCorporationName:currentElementText];
else if([elementName compare:@"corporationID"] == 0)
[character setCorporationID:currentElementText];
else if([elementName compare:@"name"] == 0)
...
Run Code Online (Sandbox Code Playgroud)
但我不喜欢这种if-else-if-else模式.望着switch发言中,我看到,我只能处理ints,chars等等,而不是对象......那么有没有更好的实现模式,我不知道的?
BTW我居然想出了设置对象的属性更好的解决方案,但我想对具体知道if- elseVS switch在Objective-C模式
我想使用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) 我的项目中有很多if语句,嵌套if语句和if-else语句,我正在考虑将它们更改为switch语句.其中一些将具有嵌套的switch语句.我知道在编译方面,switch语句通常更快.我的问题是,通常更喜欢使用哪个?
我在这个NSString中下面代码的第一行的switch语句中得到一个"预期表达式"错误: NSString *emailTitle = @"some text";
break;
case 4:
// mail
// Email Subject
NSString *emailTitle = @"some text";
// Email Content
NSString *messageBody = @"http://www.example.com/";
// To address
NSArray *toRecipents = [NSArray arrayWithObject:@""];
MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[mc setSubject:emailTitle];
[mc setMessageBody:messageBody isHTML:NO];
[mc setToRecipients:toRecipents];
// Present mail view controller on screen
[self presentViewController:mc animated:YES completion:NULL];
break;
case 5:
Run Code Online (Sandbox Code Playgroud)
没有这段电子邮件代码,switch语句可以正常工作.
谢谢你的帮助