Здравствуйте! Помогите, спасите! Недавно изучаю свифт. Хочу запрос данных с сервера перенести в отдельный класс в виде функции. Перед тем, как задать вопрос здесь, я попробовал много разных вариантов, но userInfo так и не меняется в блоке do {
userInfo["firstName"]= responseApi.user[0].first_name
userInfo["lastName"] = responseApi.user[0].last_name
}
Пожалуйста, подскажите, как правильно сделать, если это реально вообще.
var userInfo = [String:String?]
func getInfoUser (id_users: String) -> [String: String?] {
/*GET INFO USER*/
guard let url = URL(string: Shared.apiUrl + "users/user.php") else { return userInfo}
let postString = "id_users=" + id_users
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = postString.data(using: .utf8)
URLSession.shared.dataTask(with: request) {(data, response, error) in
guard let data = data else {return}
struct responseApi : Decodable {
var error: errorApi?
var response: String?
var user: [userApi]
}
struct errorApi: Decodable {
var error_code: String
var error_msg: String
}
struct userApi: Decodable {
//var : String
}
do {
let responseApi = try JSONDecoder().decode(responseApi.self, from: data)
/*CHECK API ERRORS*/
if responseApi.error != nil{
let error = responseApi.error?.error_code
let error_msg = FuncClass().iserror(error_code: error!)
}
/*END CHECK API ERRORS*/
userInfo["firstName"]= responseApi.user[0].first_name
userInfo["lastName"] = responseApi.user[0].last_name
}
catch let error {
print("ERROR CATCH")
print(error)
return
}
}.resume()
/*END GET INFO USER*/
return userInfo
}