iOS内购开发SKPaymentTransactionObserver等类型不在作用域报错如何解决
iOS应用内购StoreKit协议找不到的解决方案
以下是可直接操作的修复步骤:
- 显式指定协议所属框架,避免命名冲突
修改你的类定义代码为如下格式:
import StoreKit import UIKit class BuyStoreViewController: UIViewController, StoreKit.SKProductsRequestDelegate, StoreKit.SKPaymentTransactionObserver { //code }
显式添加StoreKit.前缀可以让编译器直接定位到系统StoreKit框架内的协议定义,解决找不到类型的报错。
- 清理Xcode缓存与索引
- 按下
Command + Shift + K快捷键清理当前项目的编译缓存 - 完全退出Xcode,打开访达前往
~/Library/Developer/Xcode/DerivedData路径,删除该路径下对应你项目的文件夹 - 重新打开Xcode,等待索引加载完成后再执行编译操作
- 检查项目配置与冲突项
- 进入项目的
General设置页,确认Deployment Info下的iOS最低支持版本设置符合预期,无异常的版本抬高 - 检查项目内是否存在自定义的
StoreKit同名文件、或者与SKPaymentTransactionObserver、SKProductsRequestDelegate重名的自定义类型,如果存在重名内容需要修改自定义内容的命名,避免和系统框架类型冲突
修复完成后等待Xcode索引刷新,对应的协议就会正常高亮,编译报错也会消失。
内容的提问来源于stack exchange,提问作者Rishabh Ambavanekar
相关产品推荐
相关产品推荐

