如何在Swift中使用UIWebView管理cookie

ern*_*neo 22 cookies objective-c webview ios swift

如果有一个主题,人们可以使用新语言Swift轻松了解如何在Webview中管理cookie?如果您在互联网上办理登机手续,则在需要实施时无法找到任何有趣的内容.甚至苹果的文档都很差.

有人知道如何在Swift中处理这些过程吗?这是我在Obj-C中找到的:

看到COOKIES存储

NSHTTPCookie *cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [cookieJar cookies]) {
NSLog(@"%@", cookie);
}
Run Code Online (Sandbox Code Playgroud)

删除存储的COOKIES

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [storage cookies]) {
[storage deleteCookie:cookie];
}
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)

如果我们能给出一次这样的答案,对每个人来说都会很好!干杯!

Dha*_*esh 45

试试这段代码:

看到COOKIES存储

    if let cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies {
        for cookie in cookies {
            NSLog("\(cookie)")
        }
    }
Run Code Online (Sandbox Code Playgroud)

删除存储的COOKIES

    var storage : NSHTTPCookieStorage = NSHTTPCookieStorage.sharedHTTPCookieStorage()
    for cookie in storage.cookies  as! [NSHTTPCookie]{
        storage.deleteCookie(cookie)
    }
Run Code Online (Sandbox Code Playgroud)

swift 2.0

let storage = NSHTTPCookieStorage.sharedHTTPCookieStorage()
for cookie in storage.cookies! {
 storage.deleteCookie(cookie)
}
Run Code Online (Sandbox Code Playgroud)

Swift 3.0

if let cookies = HTTPCookieStorage.shared.cookies {
    for cookie in cookies {
        NSLog("\(cookie)")
    }
}

let storage = HTTPCookieStorage.shared
for cookie in storage.cookies! {
    storage.deleteCookie(cookie)
}
Run Code Online (Sandbox Code Playgroud)


Vel*_*lse 6

迅捷3清晰版

保存饼干

func saveCookies() {
    guard let cookies = HTTPCookieStorage.shared.cookies else {
        return
    }
    let array = cookies.flatMap { (cookie) -> [HTTPCookiePropertyKey: Any]? in
        cookie.properties
    }
    UserDefaults.standard.set(array, forKey: "cookies")
    UserDefaults.standard.synchronize()
}
Run Code Online (Sandbox Code Playgroud)

加载Cookie:

func loadCookies() {
    guard let cookies = UserDefaults.standard.value(forKey: "cookies") as? [[HTTPCookiePropertyKey: Any]] else {
        return
    }
    cookies.forEach { (cookie) in
        guard let cookie = HTTPCookie.init(properties: cookie) else {
            return
        }
        HTTPCookieStorage.shared.setCookie(cookie)
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以像下面的代码一样调用这些函数

func webViewDidStartLoad(_ webView: UIWebView) {
    loadCookies()
}

func webViewDidFinishLoad(_ webView: UIWebView) {
    saveCookies()
}
Run Code Online (Sandbox Code Playgroud)

不要忘记为WebViewDidStartLoadwebViewDidFinishLoad设置 WebView 代理


mag*_*ahr 5

swift 2.0

let storage = NSHTTPCookieStorage.sharedHTTPCookieStorage()
for cookie in storage.cookies! {
 storage.deleteCookie(cookie)
}
NSUserDefaults.standardUserDefaults().synchronize()
Run Code Online (Sandbox Code Playgroud)