2017-04-02 56 views
0

林的代码下面的工作在发展中国家使用另一种方式拥有objective-C.Is简单的iOS应用来优化这个代码:如何优化if-else语句使其更简单?

if ([segue.identifier isEqualToString:@"showCommitDetail"]) { 
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
    CommitDetailsTableViewController *destViewController = segue.destinationViewController; 

     RepoObject *repoObj = [self.RepoListArray objectAtIndex:indexPath.row]; 
    NSString *repoCommit_url = [repoObj.Commit_url stringByReplacingOccurrencesOfString:@"{/sha}" withString:@""]; 


if (indexPath.row == 0) { 
    NSString *SpringBootURL = repoCommit_url; 
    self.commit_url = SpringBootURL; 
    destViewController.CommitRepoURL = self.commit_url; 
    destViewController.navigationItem.title = @"Spring-Integration-in-Action"; 
}else if (indexPath.row == 1){ 
    NSString *SpringFrameworkURL = repoCommit_url; 
    self.commit_url = SpringFrameworkURL; 
    destViewController.CommitRepoURL = self.commit_url; 
    destViewController.navigationItem.title = @"spring-data-jdbc-ext"; 
}else if (indexPath.row == 2){ 
    NSString *SpringAmqpURL = repoCommit_url; 
    self.commit_url = SpringAmqpURL; 
    destViewController.CommitRepoURL = self.commit_url; 
    destViewController.navigationItem.title = @"spring-data-commons"; 
}else if (indexPath.row == 3){ 
    NSString *SpringIdeURL = repoCommit_url; 
    self.commit_url = SpringIdeURL; 
    destViewController.CommitRepoURL = self.commit_url; 
    destViewController.navigationItem.title = @"spring-data-graph"; 
}else{ 
    NSString *SpringIntegratURL = repoCommit_url; 
    self.commit_url = SpringIntegratURL; 
    destViewController.CommitRepoURL = self.commit_url; 
    destViewController.navigationItem.title = @"spring-data-document-examples"; 
} 

} 

在那旁边,我怎么可以直接给标题没有硬编码像我上面做过。?

回答

1
if ([segue.identifier isEqualToString:@"showCommitDetail"]) { 
    NSInteger *selectedRow = [self.tableView indexPathForSelectedRow].row; 
    CommitDetailsTableViewController *destViewController = segue.destinationViewController; 

    RepoObject *repoObj = [self.RepoListArray objectAtIndex:selectedRow]; 
    self.commit_url = [repoObj.Commit_url stringByReplacingOccurrencesOfString:@"{/sha}" withString:@""]; 
    destViewController.CommitRepoURL = self.commit_url; 

    NSString *title; 
    switch (selectedRow) { 
     case 0: 
      title = @"Spring-Integration-in-Action"; 
      break; 
     case 1: 
      title = @"spring-data-jdbc-ext"; 
      break; 
     case 2: 
      title = @"spring-data-commons"; 
      break; 
     case 3: 
      title = @"spring-data-graph"; 
      break; 
     default: 
      title = @"spring-data-document-examples"; 
      break; 
    } 
    destViewController.navigationItem.title = title; 
} 
+0

这个答案即时寻找for.thanx爵士帮我找出.... :) –

+0

@abdul haziq 欢迎您! – Terry

-1

您可以尝试将第二个if else s更改为以下内容,它将优化代码行和易读性。

NSString *url = repoCommit_url; 
self.commit_url = url; 
destViewController.CommitRepoURL = self.commit_url; 

if (indexPath.row == 0) { 
    destViewController.navigationItem.title = @"Spring-Integration-in-Action"; 
}else if (indexPath.row == 1){ 
    destViewController.navigationItem.title = @"spring-data-jdbc-ext"; 
}else if (indexPath.row == 2){ 
    destViewController.navigationItem.title = @"spring-data-commons"; 
}else if (indexPath.row == 3){ 
    destViewController.navigationItem.title = @"spring-data-graph"; 
}else{ 
    destViewController.navigationItem.title = @"spring-data-document-examples"; 
}