You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从UIWebView迁移到WKWebView时遇request属性不存在错误

修复WKWebView中Property 'request' not found的错误

你遇到的这个问题很典型——WKWebView并没有像UIWebView那样直接暴露request属性,这是两者API设计上的差异导致的。

在UIWebView里,我们可以直接通过webview.request拿到当前加载的请求,但WKWebView把这些导航相关的信息放到了WKNavigation和WKBackForwardList中。要获取当前的请求,你可以通过以下两种方式:

方法一:通过当前导航对象获取

如果WebView正在加载过程中,可以用currentNavigation的request属性:

if (!webview.currentNavigation.request) {
    // 你的逻辑代码
}

方法二:通过历史记录列表获取当前页面的请求

如果页面已经加载完成,currentNavigation可能为nil,这时候可以从backForwardList的currentItem里取请求:

WKBackForwardListItem *currentItem = webview.backForwardList.currentItem;
if (!currentItem.request) {
    // 你的逻辑代码
}

完整兼容替换示例

为了同时覆盖加载中和已加载完成的场景,推荐你把原来的代码替换成这样:

WKWebView *webview = [[WKWebView alloc] initWithFrame:CGRectZero];
...
// 优先从当前导航取请求,无结果则从历史记录当前项获取
NSURLRequest *currentRequest = webview.currentNavigation.request ?: webview.backForwardList.currentItem.request;
if (!currentRequest) {
    // 你的原有逻辑代码
}

这样就能完美替代原来UIWebView的request属性逻辑,解决报错问题啦~

内容的提问来源于stack exchange,提问作者salud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:11:29