1

我究竟做错了什么?我处理 Apple Pay (PassKit),并且为了让我的应用程序在我的一个符合PKPaymentAuthorizationViewControllerDelegate协议的视图控制器内的 iOS 11 中正常工作并且不会崩溃,必须调用此委托回调。

@available(iOS 11.0, *)
    func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, handler completion: @escaping (PKPaymentAuthorizationResult) -> Void) {
        // ...
}

我无法在 Xcode 8.3 中编译它。我正在使用该@available属性,但它抱怨PKPaymentAuthorizationResult是未声明的类型。

有任何想法吗?

4

1 回答 1

0

您需要使用 Xcode 9 才能使用PKPaymentAuthorizationResult,因为它仅在 iOS 11 及更高版本上受支持。在您的代码中进行可用性检查是不够的,因为 Xcode 8.3 附带的 PassKit 框架没有此类。

如果你想在 Xcode 8 中使用这个类,你需要使用类的前向声明,将头添加到你的项目中,或者使用反射。

于 2017-06-20T16:44:26.283 回答