172 похожих чатов

Вот в андроид ,если я хочу работать с сетью, то

алгоритм примерно такой
1. Подключаю okHttp, Retrofit и сериализатор (Gson, Moshi)
2. Описываю все ендпоинты в коде в виде функций интерфейса MySuperApi, размечаю их GET, POST, etc..
3. Создаю где-то экземпляр Retrofit, который билдит мне реализацию интерфейса MySuperApi
4. Дёргаю методы MySuperApi, наслаждаюсь.

Ребят, подскажите пожалуйста или ткните в актуальную статью, как мне на swift построить правильно сетевое взаимодействие?

5 ответов

9 просмотров

Привет, тут есть несколько вариантов взаимодействия, берешь enum, имплементируешь в нем протокол URLRequestConvertible и реализуешь в нем варианты кейсов для конструирования запроса, на выходе этот enum тебе вернет URLRequest. Это почти та же самая аналогия с ретрофитовыми интерфейсами, только вместо протокола и абстрактных его функций ты берешь enum и его кейсы. А дальше ты либо используешь Alamofire, либо URLSession. Для парсинга json используешь имеющиеся в свифте протоколы Decodable, Encodable. Для получения результата используешь либо замыкание, некий completionHandler, либо если у тебя ios 13+ то Combine, его и Alamofire и URLSession поддерживают. Вот пример: https://pastebin.com/fgj5A4wF - так выглядит несколько запросов разных, лежащих в одном enum Так выглядит их вызов, к примеру во viewModel с использованием Combine и Alamofire https://pastebin.com/8G35E6km

max-kazantsev Автор вопроса
Руслан Иваныкин
Привет, тут есть несколько вариантов взаимодействи...

Воу, спасибо та такой развёрнутый ответ. Да, буду пилить на 13+, комбайн обязательно затащу, ибо не хочу тянуть rx. Спасибо за ссылки, смёржу их с просмотром лекции и буду щупать =)

max kazantsev
Воу, спасибо та такой развёрнутый ответ. Да, буду ...

а, ну вот, заведешь себе final class ViewModel: ObservableObject и в него воткнешь функцию обращения подписки на publishDecodable. Модели сетевые не забудь на Вусщвфиду gjlgbcfnm

max-kazantsev Автор вопроса

Пока сильно круто =) Я начал с сетевого слоя, вначале разберусь как запросы ходят и в модель разбираются, далее буду уже поднимать слои, мапперы и добираться до юай. Такое экстремальное погружение 😳

max kazantsev
Пока сильно круто =) Я начал с сетевого слоя, внач...

Понимаю, после андроида слегка непривычно будет, но потом сам аналогии будешь видеть, я сам так погружение делал)

Похожие вопросы

Обсуждают сегодня

Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
hi my MyAsus app has informed me of a new version of bios (version 300), i tried installing it but after this attempt it said: Update failed. Does anyone have any solution? My...
Sahand 🏔️
13
всем привет! у кого есть опыт подписания и нотаризации electron приложений для macos? такая проблема: использовал @electron/osx-sign и notaritool. процесс подписания и нотараз...
Артем Клементьев
11
@Dreamer_0x01 @helgispbru @Ambrion Разговор шёл об уязвимости. Меня беспокоит именно она. Все прочие вопросы, а равно и жизненная мудрость - пока в сторону :) Так вот сам ...
Андрей [aharito] Харитонов
9
why some site like google has separate page for username/email and password?
Mr Thieves
21
Тут кто-то шарит в мед оборудовании?
Benz
10
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Может быть небольшое отступление, но я тут решил обратить внимание на то, сколько весит хелловорлд на с++... Зачем он весит почти 250 Кб? У меня оконное приложение на фасме ве...
The Bird of Hermes
14
Всем привет ! Перешел недавно с Mojave на Catalin'у , в тч и на OpenCore ... Вопрос такой ... Как избавиться от красного бейджа на "настройках" со втюхиванием поставить Monter...
Maxzim Flyper
9
What do you wanna learn?
Malware ( DM = BLOCK )
12
Карта сайта