如何在Swift中手动为UIWebView设置Cookie

Jac*_*ith 10 objective-c ios swift

我需要在swift中为webview设置一个cookie.我找到了一个解决方案,但它是针对objective-c的.怎么在Swift中做到这一点?

是否可以使用sharedHTTPCookieStorage为UIWebView手动设置cookie?

这是解决方案.

Ron*_*ara 22

您可以执行以下操作,使用NSHTTPCookieNSHTTPCookieStorage设置cookie swift:

let URL = "example.com"
let ExpTime = NSTimeInterval(60 * 60 * 24 * 365)

func setCookie(key: String, value: AnyObject) {
    var cookieProps = [
        NSHTTPCookieDomain: URL,
        NSHTTPCookiePath: "/",
        NSHTTPCookieName: key,
        NSHTTPCookieValue: value,
        NSHTTPCookieSecure: "TRUE",
        NSHTTPCookieExpires: NSDate(timeIntervalSinceNow: ExpTime)
    ]

    var cookie = NSHTTPCookie(properties: cookieProps)

    NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookie(cookie!)
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

func setCookie(key: String, value: AnyObject) {
    let cookieProps: [HTTPCookiePropertyKey : Any] = [
        HTTPCookiePropertyKey.domain: URL,
        HTTPCookiePropertyKey.path: "/",
        HTTPCookiePropertyKey.name: key,
        HTTPCookiePropertyKey.value: value,
        HTTPCookiePropertyKey.secure: "TRUE",
        HTTPCookiePropertyKey.expires: NSDate(timeIntervalSinceNow: ExpTime)
    ]

    if let cookie = NSHTTPCookie(properties: cookieProps) {
        NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookie(cookie)
    }
}
Run Code Online (Sandbox Code Playgroud)

设置cookieAcceptPolicy如下:

NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always
Run Code Online (Sandbox Code Playgroud)

斯威夫特3

HTTPCookieStorage.shared.cookieAcceptPolicy = HTTPCookie.AcceptPolicy.always
Run Code Online (Sandbox Code Playgroud)

请注意,这是NSHTTPCookieAcceptPolicyAlways在Objective-C和旧版本的Swift中.

希望这可以帮助:)

  • 根据[Apple的文档](https://developer.apple.com/reference/foundation/nshttpcookiestorage/1410415-cookieacceptpolicy?language=objc),“默认的cookie接受策略是always”,所以如果always是你想要的,那么就没有需要明确设置它。 (2认同)