Допустим есть такая структура:
struct ConfigSerializer: Decodable {
var phone: String = ""
var facebookUrl: String = ""
var telegramUrl: String = ""
var instagramUrl: String = ""
}
И такой запрос:
AF.request("http://someurl/api/config/").response { response in
guard let data = response.data else { return }
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let result = try decoder.decode(ConfigSerializer.self, from: data)
print(result)
} catch let error {
print("\(error.localizedDescription)")
}
}
И при этом если данные будут следующего формата:
{
"phone": "+7 999 999 99 99",
"facebook_url": "https://fb.com",
"telegram_url": "https://t.me",
"instagram_url": "https://instagram.com"
}
то все запишется корректно (обратите внимание на facebook_url
и facebookUrl
).
Все.
Если же у вас встречается проблема “The data couldn’t be read because it is missing” - это значит, что данные не совпадают с ответом. Достаточно сделать опциональными переменные в структуре - и вы увидите, где ошибка.