也可以直接删除document 下的cache 文件夹
http://mft.iteye.com/admin/blogs/2394856
import Foundation import WebKit func removeWebData() { if #available(iOS 9.0, *) { let websiteDataTypes = WKWebsiteDataStore.allWebsiteDataTypes() let date = NSDate(timeIntervalSince1970: 0) WKWebsiteDataStore.default().removeData(ofTypes: websiteDataTypes, modifiedSince: date as Date, completionHandler: { #if DEBUG print("remove all data in iOS9 later") #endif }) }else { // Remove the basic cache. URLCache.shared.removeAllCachedResponses() // Delete system cookie store in the app let storage = HTTPCookieStorage.shared if let cookies = storage.cookies { for cookie in cookies { storage.deleteCookie(cookie) } } do { // folder 를 삭제하는 대신 contents 를 삭제하는 이유? // MainVC 가 호출되면 cache, cookie가 발생하므로 로딩시 확인된 cache, cookie 폴더의 // contents 에 대해서만 삭제 진행. // Clear web cache try deleteLibraryFolderContents(folder: "Caches") // Remove all cookies stored by the site. This includes localStorage, sessionStorage, and WebSQL/IndexedDB. try deleteLibraryFolderContents(folder: "Cookies") // Removes all app cache storage. try deleteLibraryFolder(folder: "WebKit") } catch { #if DEBUG print("Delete library folders error in iOS9 below") #endif } } } /** Delete folder in library - parameter folder: a folder you want to delete - throws: throws an error */ func deleteLibraryFolder(folder: String) throws { let manager = FileManager.default let library = manager.urls(for: .libraryDirectory, in: .userDomainMask).first! let dir = library.appendingPathComponent(folder) try manager.removeItem(at: dir) } /** Delete contents in library folder - parameter folder: target folder - throws: throws an error */ private func deleteLibraryFolderContents(folder: String) throws { let manager = FileManager.default let library = manager.urls(for: FileManager.SearchPathDirectory.libraryDirectory, in: .userDomainMask)[0] let dir = library.appendingPathComponent(folder) let contents = try manager.contentsOfDirectory(atPath: dir.path) for content in contents { do { try manager.removeItem(at: dir.appendingPathComponent(content)) } catch where ((error as NSError).userInfo[NSUnderlyingErrorKey] as? NSError)?.code == Int(EPERM) { // "EPERM: operation is not permitted". We ignore this. #if DEBUG print("Couldn't delete some library contents.") #endif } } }