Objective-C另一个switch语句中的switch语句

时间:2014-04-03 04:24:55

标签: objective-c

所以我在另一个switch语句中为某些部分和行创建了一个switch语句,很难解释,所以看看实际的代码。无论如何,我想知道是否应该避免这样的模式,或者它是否真的无关紧要,我不熟悉stackoverflow,因为你可能已经注意到了,所以我不能完全确定之前已经问过这个问题。

    switch(indexPath.section) {

    case 0: {
        switch ([indexPath row]) {
            case 0: {
                [self.navigationController pushViewController:introductionViewController animated:YES];
                        [tableView deselectRowAtIndexPath:indexPath animated:YES];
                break;
            }
            case 1: {

                [self.navigationController pushViewController:matterViewController animated:YES];
                    [tableView deselectRowAtIndexPath:indexPath animated:YES];
                break;
            }

            break;
        }


    case 1: {


        break;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

switch声明中的switch声明完全合法。它没有任何内在错误,但如果在任何一个陈述中都有很多案例,可能很难遵循。一种解决方案是将内部switch语句变为单独的函数或方法。例如,如果你有这个:

switch (a)
{
    case foo:
        switch (b)
        {
            case bar:
                doSomething();
            break;

            case bas:
                doSomethingElse();
            break;
        }
        break;
    case foo2:
        ...whatever
}

你可以这样做:

void handleFoo (int x)
{
    switch (x)
    {
        case bar:
            doSomething();
        break;

        case bas:
            doSomethingElse();
        break;
    }
}

...
main ()
{
    ...
    switch (a)
    {
        case foo:
            handleFoo(b);
        break;
        case foo2:
           ...whatever;
        break;
    }
}