我正在使用 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)
}
}
}
但是当我终止应用程序时,我仍然无法获取数据。
最佳答案
尝试将您的 cookie 保存在 UserDefaults 中,如下所示:
var authToken: String {
get {
return defaults.value(forKey: TOKEN_KEY) as! String
}
set {
defaults.set(newValue, forKey: TOKEN_KEY)
}
}
关于swift - 永久设置 alamofire cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53248751/