1. ホーム
  2. objective-c

[解決済み】何が原因か。switch文からこのcaseラベルにジャンプできない [重複]。

2022-01-28 02:36:09

質問

これは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;
    }

最後の2つのケースと、デフォルトでは、以下のようなエラーが発生します。

switchステートメントからこのケースラベルにジャンプできません。

switch文は何度も何度も使っていますが、このようなことは初めてです。 このコードはチュートリアルからコピーしたものです ( こちら ) を、私のアプリに適用しようとしています。 この件に関して、ご助力をお願いします。 SD

どのように解決するのですか?

C言語はSwiftではありません。を構造化した方が幸せになれます。 switch 文は、中括弧でケースの内部をすべて囲み、次のようになります。 これ :

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

中括弧を追加することで、他の方法ではできないことができるようになります。