升级Xcode 14.0.1后Pod中WKNavigationDelegateEvents+Rx编译报错
解决方案
1. 优先升级RxWebKit版本
这个问题是RxWebKit适配Xcode14时的已知兼容性问题,最新版本已修复该错误:
- 修改Podfile,指定兼容Xcode14的RxWebKit版本:
pod 'RxWebKit', '~> 6.5.0' - 执行终端命令更新依赖:
pod update RxWebKit
2. 手动修改报错代码(无法升级依赖时)
如果项目受限于依赖无法升级,可以直接修改WKNavigationDelegateEvents+Rx文件中的代码,调整类型转换写法,让Xcode能明确推断类型:
替换原报错代码:
static let decidePolicyNavigationResponse = #selector(WKNavigationDelegate.webView(_:decidePolicyFor:decisionHandler:) as ((WKNavigationDelegate) -> (WKWebView, WKNavigationResponse, @escaping(WKNavigationResponsePolicy) -> Void) -> Void)?) static let decidePolicyNavigationAction = #selector(WKNavigationDelegate.webView(_:decidePolicyFor:decisionHandler:) as ((WKNavigationDelegate) -> (WKWebView, WKNavigationAction, @escaping(WKNavigationActionPolicy) -> Void) -> Void)?)
为:
typealias NavigationResponseHandler = (WKWebView, WKNavigationResponse, @escaping (WKNavigationResponsePolicy) -> Void) -> Void typealias NavigationActionHandler = (WKWebView, WKNavigationAction, @escaping (WKNavigationActionPolicy) -> Void) -> Void static let decidePolicyNavigationResponse = #selector(WKNavigationDelegate.webView(_:decidePolicyFor:decisionHandler:)) as ((WKNavigationDelegate) -> NavigationResponseHandler)? static let decidePolicyNavigationAction = #selector(WKNavigationDelegate.webView(_:decidePolicyFor:decisionHandler:)) as ((WKNavigationDelegate) -> NavigationActionHandler)?
3. 清理缓存确保生效
- 按下
Cmd+Shift+K清理Xcode的Build文件夹 - 删除DerivedData目录(路径可通过Xcode偏好设置 -> 位置 查看)
- 重新执行
pod install后再编译项目
内容的提问来源于stack exchange,提问作者Joseph Chan
相关产品推荐
相关产品推荐

