Wat veroorzaakt dit: kan niet van switch-instructie naar dit hoofdletterlabel springen

Dit is een switch-statement waar ik fouten over krijg:

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

De laatste twee gevallen, plus de standaard, geven me de volgende foutmelding:

Kan niet van switch-instructie naar dit hoofdletterlabel springen

Ik heb de switch-instructie vele, vele malen gebruikt; dit is de eerste keer dat ik dit zie. De code is gekopieerd uit een zelfstudie (hier), die ik probeer aan te passen voor mijn app. Zou de hulp bij deze op prijs stellen. SD


Antwoord 1, autoriteit 100%

C is geen Swift. Je zult gelukkiger zijn als je je switch-statements structureert met accolades rond alle interieurs van de case, zoals dit:

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

Het extra niveau van accolades stelt je in staat dingen te doen die je anders niet kunt doen.

Other episodes