2017-06-20 22 views
1

私は間違って何をしていますか? 私はApple Pay(PassKit)を扱い、私のアプリが動作するために、PKPaymentAuthorizationViewControllerDelegateプロトコルに準拠した私のView Controllerの中のiOS 11でクラッシュしないように、このデリゲートコールバックを呼び出さなければなりません。PassKit APIの利用可能性がなくなります

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

これはXcode 8.3でコンパイルできません。私は@available属性を使用していますが、約PKPaymentAuthorizationResultは宣言されていない型です。

アイデア?

答えて

0

PKPaymentAuthorizationResultを使用するには、iOS 11以上でのみサポートされているため、Xcode 9を使用する必要があります。 Xcode 8.3に同梱されているPassKitフレームワークにはこのクラスがないため、コードに可用性チェックを入れるだけでは不十分です。

Xcode 8でこのクラスを使用する場合は、クラスの前方宣言を使用するか、プロジェクトにヘッダーを追加するか、リフレクションを使用する必要があります。

+0

私のアプリをiOS11上で動作させるためにXcode8でビルドします。 ... iOS 11で実行されている場合、プロトコルはこのデリゲートメソッドが実装されることを期待しています。古いOSでは、知らないタイプへの参照があります。罠のようだ。 –

関連する問題