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。我已经尝试了许多属性组合,包括同时具有NSHTTPCookieOriginURLNSHTTPCookieDomain,有和没有NSHTTPCookieSecure,甚至没有NSHTTPCookieExpires。总是nil

有没有人有任何想法我做错了什么?

我相信问题是你想要使用NSHTTTPCookieDomain而不是NSHTTPCookieOriginURL

你能尝试的属性,像这样:

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

如果不提供有效的性能,构造,你会得到一个空值。你应该提供一个布尔值到NSHTTPCookieSecure,而不是一个字符串。

+0

哇。我确信我已经尝试过,但显然我没有。这工作!我必须等待8分钟才能接受你的答案。我稍后会回来做。 – ShatyUT

+1

仅供参考,NSHTTPCookieSecure的源代码表示它应该是“TRUE”或“FALSE”:“一个字符串,说明cookie是否应该仅通过安全通道传输。字符串值必须是“TRUE”或“FALSE”。默认值是“FALSE”。我看到另一个表示ANY值暗示为真的地点。 – ShatyUT