2015-01-23 13 views
9

Jestem nowy w Xcode i Swift.Czyszczenie pamięci podręcznej UIWebView w Swift

Mam UIWebView wewnątrz mojej aplikacji. Ten interfejs UIWebView musi zostać w pełni załadowany (tzn. Wyczyścić całą pamięć podręczną obrazów/HTML/plików cookie itp.) Za każdym razem, gdy viewDidLoad.

Czy istnieje kod, który mogę zrobić w Swift?

Oto mój kod:

let myUrl = NSURL(string: "http://www.example.com") 
let myRequest = NSURLRequest(URL: myUrl!) 
myWebView.loadRequest(myRequest) 

Dzięki!

Odpowiedz

20

Można użyć

NSURLCache.sharedURLCache().removeAllCachedResponses() 
NSURLCache.sharedURLCache().diskCapacity = 0 
NSURLCache.sharedURLCache().memoryCapacity = 0 

Swift 3,0

URLCache.shared.removeAllCachedResponses() 
URLCache.shared.diskCapacity = 0 
URLCache.shared.memoryCapacity = 0 

Można również zmienić politykę cache NSURLRequest

let day_url = NSURL(string: "http://www.domain.com") 
let day_url_request = NSURLRequest(URL: day_url, 
    cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, 
    timeoutInterval: 10.0) 

let day_webView = UIWebView() 
day_webView.loadRequest(day_url_request) 

Swift 3,0

let day_url = URL(string: "http://www.domain.com") 
let day_url_request = URLRequest(url: day_url!, 
    cachePolicy:NSURLRequest.CachePolicy.reloadIgnoringLocalAndRemoteCacheData, 
    timeoutInterval: 10.0) 

let day_webView = UIWebView() 
day_webView.loadRequest(day_url_request) 

Aby uzyskać więcej informacji na temat polityki cache: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/index.html#//apple_ref/c/tdef/NSURLRequestCachePolicy

+0

Niestety, chcę zapytać, że jeśli 'timeoutInterval' się liczyć w sekundach lub minutach? – Arefly

+1

sekund. https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/index.html#//apple_ref/occ/instp/NSURLRequest/timeoutInterval – rakeshbs

+0

http://nshipster.com/ nsurlcache/says ReloadIgnoringLocalAndRemoteCacheData nie jest zaimplementowany. Radar pochodzi z 2012 roku – wyu

9
NSURLCache.sharedURLCache().removeAllCachedResponses() 
if let cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies { 
    for cookie in cookies { 
     NSHTTPCookieStorage.sharedHTTPCookieStorage().deleteCookie(cookie) 
    } 
} 
5

Swift 3.

URLCache.shared.removeAllCachedResponses() 
URLCache.shared.diskCapacity = 0 
URLCache.shared.memoryCapacity = 0 

if let cookies = HTTPCookieStorage.shared.cookies { 
    for cookie in cookies { 
     HTTPCookieStorage.shared.deleteCookie(cookie) 
    } 
} 
Powiązane problemy