Статьи

Работа с сетью в Swift — часть 2

Серия статей о работе с сетью состоит из трёх частей:

В прошлой статье мы разобрались с отправкой базовых запросов в Swift. Сегодня поговорим о том, как работать с протоколом Codable, который сделает нашу работу более изящной.

Рассмотрим ответ от сервера, который мы получили в прошлой статье:
{
“error”: false,
“category”: “Misc”,
“type”: “single”,
“joke”: “My wife is really mad at the fact that I have no sense of direction.\nSo I packed up my stuff and right.”,
“flags”:
{
“nsfw”: false,
“religious”: false,
“political”: false,
“racist”: false,
“sexist”: false,
“explicit”: false
},
“id”: 201,
“safe”: true,
“lang”: “en”
}
Этот JSON нужно распарсить, чтобы иметь доступ к отдельным полям этого файла. Самый простой способ создать нужную структуру — перейти в бесплатный сервис Quicktype, который создает Codable-структуры для конкретной модели данных.
Вставив полученный ответ в поле слева, мы получим готовую Codable-структуру в правом поле. Для того, чтобы ваш код был более безопасным, рекомендую использовать настройку Make all properties optional в правой панели.

Следующим шагом необходимо завести Codable-структуру в проекте Xcode. Для этого создадим файл Joke.swift и поместим туда код из Quicktype:
Отлично! Теперь Xcode знает о том, что у нас есть такая модель данных. Осталось только распарсить полученные данные по этой структуре. Для этого изменим код для получения данных с сервера:
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let data = data, let joke = try? JSONDecoder().decode(Joke.self, from: data) {
print(joke.setup)
}
}
task.resume()
Здесь мы проводим две проверки:

  • Проверка того, что data не пустая;
  • Проверка того, что data можно декодировать по структуре Joke, которую мы создали на предыдущем шаге.

Если обе проверки пройдены, то мы запускаем следующий код:
print(joke.setup)
Как видите, мы легко можем вытянуть любое поле из структуры.
Попробуйте поработать с более сложными структурами и потренируйтесь в извлечении различных данных из информации, полученной от сервера. Навыки работы с API можно отработать на вот этих сервисах, а если что-то не получается, то проблемой можно поделиться в нашем чате.

Всем пока!
2023-03-21 13:02 Сеть