目标c-这是什么原因:无法从switch语句跳转到此案例实验室

这个问题已经在这里有了答案:

  • 在switch语句中定义块会导致编译器错误                                     1个答案

这是一个switch语句,我在以下方面遇到错误:

        switch (transaction.transactionState) {

        case SKPaymentTransactionStatePurchasing:

            // show wait view here
            statusLabel.text = @"Processing...";
            break;

        case SKPaymentTransactionStatePurchased:

            [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

            // remove wait view and unlock iClooud Syncing
            statusLabel.text = @"Done!";

            NSError *error = nil;
            [SFHFKeychainUtils storeUsername:@"IAPNoob01" andPassword:@"whatever" forServiceName: kStoredData updateExisting:YES error:&error];

            // apply purchase action  - hide lock overlay and
            [oStockLock setBackgroundImage:nil forState:UIControlStateNormal];

            // do other thing to enable the features

            break;

        case SKPaymentTransactionStateRestored:

            [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

            // remove wait view here
            statusLabel.text = @"";
            break;

        case SKPaymentTransactionStateFailed:

            if (transaction.error.code != SKErrorPaymentCancelled) {
                NSLog(@"Error payment cancelled");
            }
            [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
            // remove wait view here
            statusLabel.text = @"Purchase Error!";
            break;

        default:
            break;
    }

最后两种情况,加上默认情况,给了我以下错误:

无法从switch语句跳转到此案例标签

我已经多次使用switch语句; 这是我第一次看到这个。 该代码已从一个教程(此处)复制而来,我正在尝试使其适应我的应用程序。 希望能对此提供帮助。 标清

SpokaneDude asked 2020-02-22T11:50:04Z
1个解决方案
120 votes

C不是Swift。 如果在所有案例内部使用大括号来构造switch语句,您会更快乐,例如:

switch (tag) {
    case 1: { // curly braces
        // ...
        break;
    }
    case 2: {  // curly braces
        // ...
        break;
    }
    case 3: {  // curly braces
        // ...
        break;
    }
}

花括号的额外级别使您可以执行其他操作之前无法做的事情。

matt answered 2020-02-22T11:50:21Z
translate from https://stackoverflow.com:/questions/34829955/what-is-causing-this-cannot-jump-from-switch-statement-to-this-case-label