【发布时间】:2017-03-15 17:05:22
【问题描述】:
我是 Objective-c 的新手。我有一个包含 0、13、5 之类的值的字符串。现在我正在尝试通过使用该值来执行各种功能。
这是我的代码。
NSString* statusfield = [NSString stringWithFormat:@"%@",[tmpDict objectForKey:@"StatusId"]];
if([statusfield isEqualToString:@"13"])
{
[cell.mySegmentedControl setTitle:@"SEND TO ADMIN" forSegmentAtIndex:0];
[cell.mySegmentedControl setTitle:@"EVALUATE" forSegmentAtIndex:1];
}
if([statusfield isEqualToString:@"5"])
{
[cell.mySegmentedControl setEnabled:NO forSegmentAtIndex:0];
[cell.mySegmentedControl setEnabled:NO forSegmentAtIndex:1];
}
if([statusfield isEqualToString: @"1"])
{
[cell.mySegmentedControl setTitle:@"ACCEPT" forSegmentAtIndex:0];
[cell.mySegmentedControl setTitle:@"REJECT" forSegmentAtIndex:1];
}
if([statusfield isEqualToString:@"3"])
{
[cell.mySegmentedControl setTitle:@"VIEW" forSegmentAtIndex:0];
[cell.mySegmentedControl setSelectedSegmentIndex:UISegmentedControlNoSegment];
}
第一个字符串和最后一个字符串包含 3。因此它在我的分段控件中显示重复项。我想检查一下具体情况。
任何帮助将不胜感激。
【问题讨论】:
-
你也可以分享截图(我还没有投票给你)。
-
不需要附上截图。我要求根据字符串值检查条件的逻辑。
-
" 第一个字符串和最后一个字符串包含 3":应该没关系,因为您使用
isEqualToString:而不是containsString:。此外,您可以使用开关盒:NSUInteger status = [[tmpDict objectForKey:@"StatusId"] integerValue]; switch(status):{case 3:{//Do you stuff}break; case 5:{//Do you stuff} break;} etc. -
在您的情况下,使用
else if或switch来验证众多代码块中的一个,仅使用if在匹配后检查每个条件。 -
@vaibhav
else/if在这种情况下确实比if更好(优化),但由于它使用的是isEqualToString:,所以如果测试不应该输入两个:只有一个或零。跨度>
标签: ios objective-c nsstring uisegmentedcontrol