Also habe ich diesen Code in Objective-C, den ich in Swift3 umschreiben muss.Swift 3 Code, der von Objective-C geschrieben wurde, funktioniert nicht
Es scheint jedoch nicht zu funktionieren. Darunter befindet sich die Objective-C und unter, dass meine Rewrite davon swift3:
Objective-C
- (void)handleMobilePayPaymentWithUrl:(NSURL *)url
{
[[MobilePayManager sharedInstance]handleMobilePayPaymentWithUrl:url success:^(MobilePaySuccessfulPayment * _Nullable mobilePaySuccessfulPayment) {
NSString *orderId = mobilePaySuccessfulPayment.orderId;
NSString *transactionId = mobilePaySuccessfulPayment.transactionId;
NSString *amountWithdrawnFromCard = [NSString stringWithFormat:@"%f",mobilePaySuccessfulPayment.amountWithdrawnFromCard];
NSLog(@"MobilePay purchase succeeded: Your have now paid for order with id '%@' and MobilePay transaction id '%@' and the amount withdrawn from the card is: '%@'", orderId, transactionId,amountWithdrawnFromCard);
[ViewHelper showAlertWithTitle:@"MobilePay Succeeded" message:[NSString stringWithFormat:@"You have now paid with MobilePay. Your MobilePay transactionId is '%@'", transactionId]];
} error:^(NSError * _Nonnull error) {
NSDictionary *dict = error.userInfo;
NSString *errorMessage = [dict valueForKey:NSLocalizedFailureReasonErrorKey];
NSLog(@"MobilePay purchase failed: Error code '%li' and message '%@'",(long)error.code,errorMessage);
[ViewHelper showAlertWithTitle:[NSString stringWithFormat:@"MobilePay Error %li",(long)error.code] message:errorMessage];
//TODO: show an appropriate error message to the user. Check MobilePayManager.h for a complete description of the error codes
//An example of using the MobilePayErrorCode enum
//if (error.code == MobilePayErrorCodeUpdateApp) {
// NSLog(@"You must update your MobilePay app");
//}
} cancel:^(MobilePayCancelledPayment * _Nullable mobilePayCancelledPayment) {
NSLog(@"MobilePay purchase with order id '%@' cancelled by user", mobilePayCancelledPayment.orderId);
[ViewHelper showAlertWithTitle:@"MobilePay Canceled" message:@"You cancelled the payment flow from MobilePay, please pick a fruit and try again"];
}];
}
Und mein swift3 umschreiben:
func handleMobilePayPayment(with url: URL) {
MobilePayManager.sharedInstance().handleMobilePayPayment(with: url, success: {(mobilePaySuccessfulPayment: MobilePaySuccessfulPayment?) -> Void in
let orderId: String = mobilePaySuccessfulPayment!.orderId
let transactionId: String = mobilePaySuccessfulPayment!.transactionId
let amountWithdrawnFromCard: String = "\(mobilePaySuccessfulPayment!.amountWithdrawnFromCard)"
print("MobilePay purchase succeeded: Your have now paid for order with id \(orderId) and MobilePay transaction id \(transactionId) and the amount withdrawn from the card is: \(amountWithdrawnFromCard)")
self.alert(message: "You have now paid with MobilePay. Your MobilePay transactionId is \(transactionId)", title: "MobilePay Succeeded")
}, error: {(error: Error?) -> Void in
let dict: [AnyHashable: Any]? = error?.userInfo
let errorMessage: String? = (dict?.value(forKey: NSLocalizedFailureReasonErrorKey) as? String)
print("MobilePay purchase failed: Error code '(Int(error?.code))' and message '(errorMessage)'")
self.alert(message: errorMessage!, title: "MobilePay Error \(error?.code as! Int)")
self.alert(message: error as! String)
//TODO: show an appropriate error message to the user. Check MobilePayManager.h for a complete description of the error codes
//An example of using the MobilePayErrorCode enum
//if (error.code == MobilePayErrorCodeUpdateApp) {
// NSLog(@"You must update your MobilePay app");
//}
}, cancel: {(_ mobilePayCancelledPayment: MobilePayCancelledPayment?) -> Void in
print("MobilePay purchase with order id \(mobilePayCancelledPayment?.orderId!) cancelled by user")
self.alert(message: "You cancelled the payment flow from MobilePay, please pick a fruit and try again", title: "MobilePay Canceled")
})
}
Das Problem ist ich bin bekommen ist mit dem Fehler in der Mitte, wie in der Abbildung unten gezeigt.
Ich bin nicht sicher, was ich falsch mache und wie die userinfo zu erhalten und die Error-Info „out“ des Irrtums.
Vielen Dank im Voraus!
Das hat funktioniert! Vielen Dank! –