Быстрый. Сбор Данных Из Разных Запросов

Предисловие Материал представляет собой пример, демонстрирующий возможности языка и позволяющий лучше понять работу различных фреймворков (например, Joint), которые упрощают работу с сетью.

Материал предназначен для начинающих разработчиков для общего ознакомления.

Все примеры в публикации представляют собой предельно упрощенные версии кода и не должны использоваться при разработке приложений в том виде, в котором они существуют. Даже в модифицированном виде код не конкурирует с существующими решениями и создан исключительно в вводный целей.

А также не забывайте, что все операции, выполняемые с языком Swift, должны быть безопасными; в примере об этом не может быть и речи.

Весь свой информационный мусор я собираю на своей стене в ВК , так что добро пожаловать.

Представим себе типичную ситуацию.

Нашему приложению необходимо подключиться к серверу и получить различные данные.

Например, пусть это будет: список категорий, список товаров, стоимость товаров.

Неважно, это просто какая-то абстрактная задача.

Мы не можем собрать эти данные по ряду конкретных причин в рамках одного запроса, поэтому наша задача — выполнить несколько запросов и после того, как все они будут выполнены (мы получим данные), мы выполним некоторые действия.

Невозможно выполнять действия, пока не получены все данные; порядок получения данных нам неизвестен, т.к.

это асинхронные операции и объем данных так же неизвестен, как и скорость сети и т. д. Думаю, пояснения не нужны.

Давайте подумаем, что мы будем делать, чтобы это реализовать.

Конечно, первая мысль — погуглить и скопипастить код из stackoverlow, но давайте все же решим проблему сами.

Более того, при решении этой проблемы мы не будем использовать коробочные решения от Apple. Нам нужно сделать это в рамках возможностей языка, используя URL-сессия .

Давайте создадим решение, отвечающее нашим требованиям.

Что ж, начнем.

Давайте создадим класс МойHttpExample

  
  
  
  
   

class MyHttpExample { }

И добавим к нему метод запрос

func request(){}

метод будет общедоступным

public func request(){}

и примет два аргумента

public func request(url urlString: String, key: String){}

тип ссылки Нить и ключ, назначение которого вы поймете чуть позже.

В методе мы будем использовать URL-сессия для отправки запросов, но сначала нам нужен удобный тип данных, удовлетворяющий нашим запросам, поэтому создадим его в классе МойHttpExample оболочка как тип данных обертка

struct Wrapper {

Теги: #Разработка iOS #Разработка мобильных приложений #Swift #закрытие #dataTask #didset #urlsession

Вместе с данным постом часто просматривают: