ios - 未知类型名称“SKPaymentDiscount”。FBSDKCoreKit
问题描述
facebook-ios-sdk
在我的Swift 3 iOS 应用程序中为 iOS 构建 Facebook sdk 时遇到问题。
我最近将我在 iOS 应用程序中使用的FBSDKCorekit
和pod 从版本4.30.0 更新到了5.13.1FBSDKLoginkit
我正在使用针对 iOS 10.2 的 XCode 9.3.1。使用 XCode 构建我的应用程序时,出现以下问题:未知类型名称 'SKPaymentDiscount'; 您的意思是“SKProductDiscount”吗?
当编译器尝试构建以下文件时会引发此错误Core/FBSDKPaymentObserver.m
。请参阅以下部分。
...
#if !TARGET_OS_TV
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_11_1
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_11_4
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_12_1
// promotional offer starting from iOS 12.2
if (@available(iOS 12.2, *)) {
SKPaymentDiscount *paymentDiscount = transaction.payment.paymentDiscount;
if (paymentDiscount) {
NSArray<SKProductDiscount *> *discounts = product.discounts;
for (SKProductDiscount *discount in discounts) {
if (discount.paymentMode == SKProductDiscountPaymentModeFreeTrial &&
[paymentDiscount.identifier isEqualToString:discount.identifier]) {
return YES;
}
}
}
}
#endif
...
据我研究后了解,SKPaymentDiscount
仅在 iOS sdk 12.2 中引入。由于我使用的是 XCode 9.3.1,最新可用的 iOS SDK 是 11.3,但条件编译器表达式#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_12_1
应确保编译器不会构建之前的代码段。
但是,情况似乎并非如此,我收到了构建错误。 未知类型名称“SKPaymentDiscount”;您的意思是“SKProductDiscount”吗?
我尝试安装支持 iOS sdk 12.2 的 XCode 10.0,但我遇到了同样的错误。请指教。
解决方案
您应该更新到 Xcode 11.3.1。它是目前截至 2020 年 1 月的最新版本。
推荐阅读
- javascript - 加载一个anime.js动画html文件作为HTML部分的背景
- ios - 在动态框架中使用 +load 来设置快速 WKNavigationDelegate 是否安全?
- excel - VBA - 保存工作簿并将今天的日期添加到当前工作簿名称
- python - 如何将使用 django 模板语言在模板中显示的数据转换为不同的方法
- shell - 如何使用分隔符读取文件并使用 shell 脚本基于分隔符逐行写入不同的文件
- reactjs - Material-UI 自定义 redux-form-material-ui RadioGroup
控制道具 - android - 如何在 Windows 上使用 apache 下载图像
- ionic-framework - 离子 formData 附加在服务器中显示 null
- php - php获取当前文件目录的URL
- android - 尝试在 ImageButton 或等效项上设置 Text