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

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

我不能在Xcode8.3中编译它。我正在使用@available属性,但它抱怨PKPaymentAuthorizationResult是未声明的类型。
有什么想法吗?

最佳答案

您需要使用Xcode 9才能使用PKPaymentAuthorizationResult,因为它仅在iOS 11及更高版本上受支持。在代码中进行可用性检查是不够的,因为Xcode8.3附带的PassKit框架没有这个类。
如果要在Xcode 8中使用这个类,需要使用类的前向声明、将头添加到项目中或使用反射。

关于swift - PassKit API的可用性不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44658241/

10-13 09:26