造成这种情况的原因: 无法从 switch 语句跳转到这个 case 标签

这是一个 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 语句跳转到这个 case 标签

我已经多次使用 switch 语句; 这是我第一次看到这种情况。代码已经从一个教程(给你)复制,我试图适应我的应用程序。我会很感激你在这件事上的帮助。SD

80924 次浏览

C 不是斯威夫特。如果你在所有的案例内部使用花括号来构造你的 switch语句,比如 这个:

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

额外级别的花括号允许你做你不能做的事情,否则。