Swift WKWebView是否需要URL?

Swift WKWebView是否需要URL?,swift,wkwebview,Swift,Wkwebview,我通过加载JSON的API导入HTML内容,并希望使用WKWebView来显示它。是否可以在没有URL的情况下使用WKWebView 此控制器是以编程方式构建的,因此webView被添加为子视图。从长远来看,我会让webView显示在其他内容的下方,这些内容也是从API中提取的 这是我的代码: var webView = WKWebView() webView = WKWebView(frame: scrollView.bounds, configuration: WKWebViewConfig

我通过加载JSON的API导入HTML内容,并希望使用WKWebView来显示它。是否可以在没有URL的情况下使用WKWebView

此控制器是以编程方式构建的,因此webView被添加为子视图。从长远来看,我会让webView显示在其他内容的下方,这些内容也是从API中提取的

这是我的代码:

var webView = WKWebView()
webView = WKWebView(frame: scrollView.bounds, configuration: WKWebViewConfiguration())
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

scrollView.addSubview(webView)
webView.navigationDelegate = self as? WKNavigationDelegate
webView.loadHTMLString("<html><body>\(self.articleBody)</body></html>", baseURL: nil)
在使用随机URL和非HTML进行测试时,它工作得很好


我已经看了这个问题,但没有一个对我有意义的答案:

我仍然会遇到同样的错误,但至少我现在看到了我的内容

这个问题与我调用webView.loadHTMLString的位置有关。我必须将它移动到我的URLSession代码中,而不是将它保留在外部

URLSession.shared.dataTask(with: url) { (data, response, err) in
   guard let data = data else { return }

   if err == nil {
     do {
       let decoder = JSONDecoder()
       let devo = try decoder.decode(Devotion.self, from: data)

       DispatchQueue.main.async {
          self.articleBody = devo.body
          self.webView.loadHTMLString("<html><body>\(self.articleBody)</body></html>", baseURL: nil)
       }
     } catch let err {
        print("Err", err)
     }
   }
}.resume()
URLSession.shared.dataTask(带:url){(数据、响应、错误)在
guard let data=data else{return}
如果err==nil{
做{
let decoder=JSONDecoder()
让devo=try decoder.decode(pilture.self,from:data)
DispatchQueue.main.async{
self.articleBody=devo.body
self.webView.loadHTMLString(\(self.articleBody)”,baseURL:nil)
}
}捉迷藏{
打印(“错误”,错误)
}
}
}1.简历()

只是一句话-您现在已经自己解决了问题:示例代码的第一行
var webView=WKWebView()
创建了一个
WKWebView
实例,该实例在第二行中立即被覆盖。谢谢@Reinhard Männer。
URLSession.shared.dataTask(with: url) { (data, response, err) in
   guard let data = data else { return }

   if err == nil {
     do {
       let decoder = JSONDecoder()
       let devo = try decoder.decode(Devotion.self, from: data)

       DispatchQueue.main.async {
          self.articleBody = devo.body
          self.webView.loadHTMLString("<html><body>\(self.articleBody)</body></html>", baseURL: nil)
       }
     } catch let err {
        print("Err", err)
     }
   }
}.resume()