我正在做一个项目,我在其中使用来自异步连接的JSON数据加载表视图。我使用switch
语句来加载每一行,如下所示:
dictionaryData = [responseString JSONValue];
switch (indexPath.row)
{
case 0:
{
NSString *name = [NSString stringWithFormat:@"%@ : %@ %@",@"Name",[dictionaryData valueForKey:@"firstName"],[dictionaryData valueForKey:@"lastName"]];
cell.textLabel.text = name;
break;
}
case 1:
{
NSString *email = [NSString stringWithFormat:@"%@ : %@",@"Email",[dictionaryData valueForKey:@"email"]];
cell.textLabel.text = email; }
break;
有8行,我必须编写8个开关案例,我认为我的方法太长了。 任何人都可以告诉我,有任何替代switch语句。
答案 0 :(得分:3)
用阵列替换您的开关。数组中的每个索引都对应于前case
之一。应使用您需要的键设置数组
keyArray = [NSArray arrayWithObjects:@"Name", @"Email", ..., nil];
dictionaryData = [responseString JSONValue];
NSString * rowKey = [keyArray objectAtIndex:[indexPath row]];
[[cell textLabel] setText:[dictionaryData objectForKey:rowKey]];
答案 1 :(得分:1)
switch
的替代方法是使用一系列if
/ else
语句,这些语句不会使代码更短。如果您的方法太长或太复杂,请将每个案例的主体移动到自己的方法中,然后从相应的案例中调用该方法。
答案 2 :(得分:1)
在某些情况下,对象将是更好的选择。
<强>更新强>
我详细介绍了如何在这里(以过度设计的方式)解决这个问题: What alternatives to a switch statement could I use to update my UITableViewCells?