Ceci est une instruction switch sur laquelle je reçois des erreurs:
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;
}
Les deux derniers cas, plus le cas par défaut, me donnent l'erreur suivante:
Impossible de passer d'une instruction switch à cette étiquette de cas
J'ai utilisé l'instruction switch très souvent. c'est la première fois que je vois ça. Le code a été copié à partir d'un tutoriel ( here ), que je tente d'adapter pour mon application. J'apprécierais l'aide sur celui-ci. Dakota du Sud
C n'est pas rapide. Vous serez plus heureux si vous structurez vos déclarations switch
en utilisant des accolades autour de tous les cas, comme this :
switch (tag) {
case 1: { // curly braces
// ...
break;
}
case 2: { // curly braces
// ...
break;
}
case 3: { // curly braces
// ...
break;
}
}
Le niveau supplémentaire d'accolades vous permet de faire des choses que vous ne pouvez pas faire autrement.