Swift - NSHTTPCookie 为零

Swift - NSHTTPCookie is nil

我正在尝试在 Swift 中编写几个 cookie,这样当我显示 webview 时,它将能够读取这些 cookie 并做出适当的反应。我找到了许多关于如何创建 cookie 和阅读 Apple 文档的示例,但我似乎无法获得有效的 NSHTTPCookie 对象。它总是零。

这是我的代码:

let baseHost = "domain.com"
let oneYearInSeconds = NSTimeInterval(60 * 60 * 24 * 365)

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

    var cookie = NSHTTPCookie(properties: cookieProps)
    // This line fails due to the nil cookie
    NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookie(cookie!)
}

我的 cookie 变量是 nil。我已经尝试了多种属性组合,包括同时具有 NSHTTPCookieOriginURLNSHTTPCookieDomain,有和没有 NSHTTPCookieSecure,甚至没有 NSHTTPCookieExpires。总是 nil.

有人知道我做错了什么吗?

我认为问题是您想要使用 NSHTTTPCookieDomain,而不是 NSHTTPCookieOriginURL

你能试试这样的属性吗:

var cookieProps = [
        NSHTTPCookieDomain: baseHost,
        NSHTTPCookiePath: "/",
        NSHTTPCookieName: key,
        NSHTTPCookieValue: value,
        NSHTTPCookieSecure: "TRUE",
        NSHTTPCookieExpires: NSDate(timeIntervalSinceNow: oneYearInSeconds)
    ]

如果您不向构造函数提供有效的属性,您将得到一个空值。您应该向 NSHTTPCookieSecure 提供布尔值,而不是字符串。