如何优化if-else语句更简单?

时间:2017-04-02 14:31:03

标签: objective-c if-statement

我正在使用Objective-C.Is开发简单的ios应用程序,使用另一种方法来优化此代码:

 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";
}

}

除此之外,如何直接分配标题而不像上面那样进行硬编码。?

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:-1)

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

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";
}