UIWebView加载url并保存缓存以在iOS swift 3中解决脱机问题?
更新 我试图在swift中实现web缓存技术。它将加载url并显示一些数据,并在缓存后保存一些数据。在使用coredata保存后,我的日志中已经有了这些数据,但我无法使用这些额外数据更新现有的webview 以下是我的例子: webview第一次查看: 单击加载表详细信息时,我已在MyURLProtocol.swift类的func connection(uconnection:NSURLConnection!,didFailWithError error:NSError!)中调用了starting load()方法 如何使用此数据将当前web内容更新到webview 在:BrowserViewController.swift中的实现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
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中显示它