UIWebView加载url并保存缓存以在iOS swift 3中解决脱机问题?

UIWebView加载url并保存缓存以在iOS swift 3中解决脱机问题?,ios,swift,uiwebview,Ios,Swift,Uiwebview,更新 我试图在swift中实现web缓存技术。它将加载url并显示一些数据,并在缓存后保存一些数据。在使用coredata保存后,我的日志中已经有了这些数据,但我无法使用这些额外数据更新现有的webview 以下是我的例子: webview第一次查看: 单击加载表详细信息时,我已在MyURLProtocol.swift类的func connection(uconnection:NSURLConnection!,didFailWithError error:NSError!)中调用了start

更新

我试图在swift中实现web缓存技术。它将加载url并显示一些数据,并在缓存后保存一些数据。在使用coredata保存后,我的日志中已经有了这些数据,但我无法使用这些额外数据更新现有的webview

以下是我的例子:

webview第一次查看:

单击加载表详细信息时,我已在MyURLProtocol.swift类的func connection(uconnection:NSURLConnection!,didFailWithError error:NSError!)中调用了starting load()方法

如何使用此数据将当前web内容更新到webview

在:BrowserViewController.swift中的实现

import UIKit

class BrowserViewController: UIViewController, UITextFieldDelegate {

  @IBOutlet var textField: UITextField!
  @IBOutlet var webView: UIWebView!

  //MARK: IBAction

  @IBAction func buttonGoClicked(_ sender: UIButton) {
    if self.textField.isFirstResponder {
      self.textField.resignFirstResponder()
    }

    self.sendRequest()
  }

  //MARK: UITextFieldDelegate

  func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    textField.resignFirstResponder()

    self.sendRequest()

    return true
  }

  //MARK: Private

  func sendRequest() {
    if let text = self.textField.text {
      //  MyURLProtocol.startLoading()
      // return
      let sampleUrl="https://apple.com"

      let url = URL(string:sampleUrl)
      let request = URLRequest(url:url!)
      self.webView.loadRequest(request)
    }
  }
}
在MyURLProtocol.swift中,我将self.startLoading()称为 func连接(u连接:NSURLConnection!,didfailwither错误:NSError!)

方法如下所示:

override func startLoading() {

 print("startLoading url \(self.request)")

// 1
let possibleCachedResponse = self.cachedResponseForCurrentRequest()
if let cachedResponse = possibleCachedResponse {
  print("Serving response from cache")



  // 2
  let data = cachedResponse.value(forKey: "data") as! Data!
  let mimeType = cachedResponse.value(forKey: "mimeType") as! String!
  let encoding = cachedResponse.value(forKey: "encoding") as! String!
  let jsonData = cachedResponse.value(forKey: "jsonData") as! String!

  let response = URLResponse(url: self.request.url!, mimeType: mimeType, expectedContentLength: (data?.count)!, textEncodingName: encoding)

  // 4
  self.client!.urlProtocol(self, didReceive: response, cacheStoragePolicy: .notAllowed)
  self.client!.urlProtocol(self, didLoad: data!)
  self.client!.urlProtocolDidFinishLoading(self)


  print("cache binaryData \(jsonData)")

} else {
  // 5
  print("Serving response from NSURLConnection")

  let newRequest = (self.request as NSURLRequest).mutableCopy() as! NSMutableURLRequest
  URLProtocol.setProperty(true, forKey: "MyURLProtocolHandledKey", in: newRequest)
  self.connection = NSURLConnection(request: newRequest as URLRequest, delegate: self)
}
}
我的数据在jsondata中,我需要从保存的数据在我的webview中显示它