Swift - NSHTTPCookie是零
问题描述:
我想在Swift中编写几个cookie,这样当我显示一个webview时,它将能够读取这些cookie并作出适当的反应。我发现了很多如何创建cookie并阅读Apple文档的例子,但我似乎无法获得有效的NSHTTPCookie对象。它总是零。Swift - 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
。我已经尝试了许多属性组合,包括同时具有NSHTTPCookieOriginURL
和NSHTTPCookieDomain
,有和没有NSHTTPCookieSecure
,甚至没有NSHTTPCookieExpires
。总是nil
。
有没有人有任何想法我做错了什么?
答
我相信问题是你想要使用NSHTTTPCookieDomain
而不是NSHTTPCookieOriginURL
。
你能尝试的属性,像这样:
var cookieProps = [
NSHTTPCookieDomain: baseHost,
NSHTTPCookiePath: "/",
NSHTTPCookieName: key,
NSHTTPCookieValue: value,
NSHTTPCookieSecure: "TRUE",
NSHTTPCookieExpires: NSDate(timeIntervalSinceNow: oneYearInSeconds)
]
如果不提供有效的性能,构造,你会得到一个空值。你应该提供一个布尔值到NSHTTPCookieSecure
,而不是一个字符串。
哇。我确信我已经尝试过,但显然我没有。这工作!我必须等待8分钟才能接受你的答案。我稍后会回来做。 – ShatyUT
仅供参考,NSHTTPCookieSecure的源代码表示它应该是“TRUE”或“FALSE”:“一个字符串,说明cookie是否应该仅通过安全通道传输。字符串值必须是“TRUE”或“FALSE”。默认值是“FALSE”。我看到另一个表示ANY值暗示为真的地点。 – ShatyUT