Mac Catalyst error: Cannot override 'paymentQueue' which has been marked unavailable

Mac Catalyst error: Cannot override 'paymentQueue' which has been marked unavailable

我在 Swift 中有一个 iOS 应用程序,它在 SKPaymentTransactionObserver 中实现了 paymentQueue(_:shouldAddStorePayment:for:) 方法。但是,当我使用 Mac Catalyst 将此应用程序移植到 Mac 时,每当我尝试在 Mac 上编译并 运行 它时,它都会给我这个编译错误,上面写着 "Cannot override 'paymentQueue' which has been marked unavailable"。

我尝试在 paymentQueue 方法周围添加 #if os(iOS) ... #endif@available(iOS 11, *) 语句,但它仍然给我这个错误。

目前错误多多的代码如下:

#if os(iOS)
func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool {
    return true
}
#endif

还有其他人遇到这个问题吗?

您可以阻止代码被编译到 Mac Catalyst 构建中 !targetEnvironment(macCatalyst) 条件:

#if !targetEnvironment(macCatalyst)
func paymentQueue(_ queue: SKPaymentQueue,
                  shouldAddStorePayment payment: SKPayment,
                  for product: SKProduct) -> Bool {
    return true
}
#endif