Извините, но это ужасный код цели + 1002 * кода.
Очевидно, что вам нужны константы в ваших классах, поэтому объявляйте константы, и почти во всех случаях вам вообще не нужны классы
struct Response: Decodable {
let teams: [Team]
private enum CodingKeys : String, CodingKey { case teams = "image_team" }
}
struct Team: Decodable {
let id: Int
let imagePath: URL
let teamID: Int
private enum CodingKeys : String, CodingKey { case id, imagePath = "img_path", teamID = "id_team" }
}
Вот и все.Ничего больше.Никаких странных общественных и частных установщиков.Нет инициализаторов при работе с (De)codable
.И если вы будете использовать swiftier keys, вы можете полностью пропустить объявления CodingKeys
.Ключ imagePath
можно даже расшифровать как URL
.
И, наконец, без запятой!
Для чтения данных используйте традиционные URLSession
let url = URL(string: "http://127.0.0.1/MyWebService/api/fetch_image.php")!
let dataTask = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print(error)
return
}
do {
let result = try JSONDecoder().decode(Response.self, from: data!)
print(result)
} catch {
print(error)
}
}
dataTask.resume()
Чтобы добавить параметры, вы должны добавить query
к URL-адресу, например
http://127.0.0.1/MyWebService/api/fetch_image.php?id_team=2
, но это зависит от вашего бэкэнда.