Я искал 2 дня (связал темы, которые использовал ниже), и пока ничего не получилось.Мой код, как показано ниже, для сериализации данных, которые API-интерфейс отправляет обратно, и пытается сохранить их в пользовательских настройках по умолчанию, используя Swift 4.
do{
let token = try JSONSerialization.jsonObject(with: data!, options: [])
print(token)
UserDefaults.standard.set(token, forKey: "savedToken")
}catch{
if httpResponse.statusCode == 401{
Helper.showAlert(viewController: self, title: "Oops", message: "Username or Password Incorrect")
}
print(error)
}
} else if let error = error {
Helper.showAlert(viewController: self, title: "Well Damn", message: "Ay chief we have no idea what just happened but it didn't work")
print(error)
}
Когда я пытаюсь получить данные, которые я думал, были сохранены в ключе"saveToken",
let tokenData = UserDefaults.standard.object(forKey: "savedToken")
У меня есть вывод tokenData в консоль и там написано ноль.Я попробовал метод в этом потоке , и он все еще говорит, что это ноль.Мне пришлось удалить команду «если» из ответа, чтобы я мог использовать значение.Это код, который я использую, который требует сохраненный токен;
let tokenData = UserDefaults.standard.object(forKey: "savedToken")
let areaHeaders = [
"Authorization": "token \(tokenData)", // <-- this is where I need the token.
"Content-Type": "application/x-www-form-urlencoded",
"anonym": "true",
"cache-control": "no-cache",
"Postman-Token": "0017837d-5229-46a3-98ff-58fe3aa09df9"
]
let areaData = NSMutableData(data: "undefined=undefined".data(using: String.Encoding.utf8)!)
let areaRequest = NSMutableURLRequest(url: NSURL(string: "http://localhost:8000/areas/sample/")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
areaRequest.httpMethod = "GET"
areaRequest.allHTTPHeaderFields = areaHeaders
areaRequest.httpBody = areaData as Data
let areaSession = URLSession.shared
let areaDataTask = areaSession.dataTask(with: areaRequest as URLRequest, completionHandler: { (data, response, error) -> Void in
if let data = data {
do{
let postData = try JSONSerialization.jsonObject(with: data, options: [])
print(postData)
}catch{
print(error)
}
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
areaDataTask.resume()
Я полностью потерян в этот момент.Я тоже устал этот метод тоже.Все, что я пытаюсь сделать, - это сохранить возвращенные данные, которые выглядят следующим образом: , в настройки пользователя по умолчанию или что-то, где я могу легко получить их.