【问题标题】:PassKit API availability doesn't workPassKit API 可用性不起作用
【发布时间】:2017-06-20 16:17:40
【问题描述】:

我做错了什么? 我处理 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 是一个未声明的类型。

有什么想法吗?

【问题讨论】:

    标签: swift uikit passkit xcode8


    【解决方案1】:

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

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

    【讨论】:

    • 我希望我在 Xcode8 中构建的应用能够在 iOS11 上运行。 ...如果它在 iOS 11 上运行,则协议需要实现此委托方法。在较旧的操作系统上,它引用了它不知道的类型。好像是个陷阱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 2011-07-27
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2020-11-25
    相关资源
    最近更新 更多