когда пришло время получить ответ от HTTP-запроса, не очевидно, как выяснить, что может быть преобразовано в Swift. мы получаем ответ в формате JSON на наш запрос, который будет примерно таким:

это похоже на то, что в Swift может быть словарем, однако это не правильный тип данных коллекции для перевода этого объекта Json. В Swift есть протокол Codable, и вы можете использовать функцию JSONDecoder().decode(ваш объект, из: ответ данных API). правильно о запросе данных из API, если вы не позаботитесь о том, чтобы создать объект, выглядящий точно так же, как наш объект Json из API, вы никогда не получите данные. Вы потеряете время, чтобы понять, что не так, возможно, потому что вы подумаете, что что-то не так с тем, как вы настроили HTTP-запрос. если вы посмотрите на это изображение слева, вы увидите свойство «uvi»: 1.28, это свойство приводило к сбою моего приложения «Погода». потому что я установил это свойство как целое число, поскольку, когда uvi равен нулю, значение будет просто 0, что является целым числом, небольшая ошибка, подобная этой, может привести к сбою вашего приложения, поэтому чрезвычайно важно, чтобы вы создали STRUCT в swift, который похож на наш ответ JSON. если мы хотим создать объект в Swift, хранящий JSON на этом изображении, нам нужно будет сделать следующее:

struct NameYouWantToGive:Codable {

var lat: Double
var lon: Double
var timezone: String
var timezone_offset: Int
var current: Current
}

имя переменных должно соответствовать объекту JSON, а также назначать протокол Codable в структуре. вы, вероятно, заметили, что переменная current имеет тип Current, который будет другой структурой с именем Current, которая выглядит точно так же, как объект JSON, например:

struct Current:Codable {

var dt: Int
var восход: Int
var закат: Int
var температура: двойная
var ощущения: двойная
var давление: Int
var влажность: Int
var точка росы: Double
var uvi: Double
var облака: Int
var видимость: Int?
var wind_speed: Double
var wind_deg: Int
var wind_gust: двойной?
var погода: [погода]
}

и теперь мы точно таким же образом создадим то же самое для переменных погоды:

struct weather: Codable {
var id: Int
var main: String
var описание: строка
var значок: строка
}

чтобы лучше понять все типы полей объекта JSON, я предлагаю внимательно изучить документацию API, которая очень поможет и сэкономит вам массу времени!
когда вы видите такой объект:

это будет Struct с именем Coord с двумя переменными lon и lat, обе с типами Double, и если coord будет переменной самого большого объекта, она будет похожа на var coord: Coord.

если вы столкнулись с объектом, похожим на погоду, которую мы уже видели выше:

это будет структура с именем weather :
struct weather: Codable {
var id: Int
var main: String
var description: String
var icon: String
}

но если это будут переменные в самом большом объекте, вы объявите его так: var weather:[погода], так как это будет массив типа погода (вы можете понять это, потому что объект имеет [ ], содержащий {}).

при работе с HTTP-запросом я нахожу использование Postman( www.postman.com ) действительно полезным для проверки правильности URL-адреса и всех ошибок, с которыми вы можете столкнуться при настройке запроса, а также полезно взглянуть на объект, который вы получаете.

Обернуть

  1. внимательно прочитайте документацию по API
  2. Понять тип объекта, который вы получаете от API
  3. затем быстро создайте STRUCT, чтобы он был тем же, что и объект, который вы получаете в ответе. имена и типы переменных должны быть такими же, как и у объекта!!!

спасибо за прочтение, Надеюсь статья вам поможет.