我正在使用Alamofire进行请求,并且其中一些获得了cookie,当我启动该应用并使用它时一切正常,但是当我终止该应用并重新打开cookie时,一切都不再存在了。我进行了很多搜索,发现this,但所有答案都无济于事。 我尝试在每个请求之后保存cookie,并在发送请求之前加载它们,如下所示:
func saveCookies(response: DataResponse<Any>) {
let headerFields = response.response?.allHeaderFields as! [String: String]
let url = response.response?.url
let cookies = HTTPCookie.cookies(withResponseHeaderFields: headerFields, for: url!)
var cookieArray = [[HTTPCookiePropertyKey: Any]]()
for cookie in cookies {
cookieArray.append(cookie.properties!)
}
UserDefaults.standard.set(cookieArray, forKey: "savedCookies")
UserDefaults.standard.synchronize()
}
func loadCookies() {
guard let cookieArray = UserDefaults.standard.array(forKey: "savedCookies") as? [[HTTPCookiePropertyKey: Any]] else { return }
for cookieProperties in cookieArray {
if let cookie = HTTPCookie(properties: cookieProperties) {
HTTPCookieStorage.shared.setCookie(cookie)
}
}
}
但是,即使我终止了该应用程序,也无法获取数据。
答案 0 :(得分:0)
尝试像这样将Cookie保存在UserDefaults中:
var authToken: String {
get {
return defaults.value(forKey: TOKEN_KEY) as! String
}
set {
defaults.set(newValue, forKey: TOKEN_KEY)
}
}