Форум программистов, компьютерный форум CyberForum.ru

Архитектура для сетевого взаимодействия в приложении - Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование iOS/iPhone Поиск по тегам или расширенный поиск http://www.cyberforum.ru/ios-dev/thread1344696.html
Вечер добрый. Подскажите пожалуйста как реализовать поиск по тегам. Хотя бы алгоритм. Например: автомобиль у него есть характеристики цвет, марка, модель. Характеристики я так понимаю это словарь? У меня допустим есть двадцать автомобилей. Получается массив словарей. Когда пользователь в расширенном поиске выбирает цвет - красный и марка - хонда, то как произвести поиск? Проверять все словари...
Программирование iOS/iPhone Тестирование приложения для ios подскажите, я дописал приложение для яблока и вот хотел бы протестировать его на реальном устройстве, вопрос - можно ли как то его протестировать не платя 99$, а заплатить их после того как закончится тестирование? http://www.cyberforum.ru/ios-dev/thread1344019.html
Программирование iOS/iPhone Смена Root View Controller в Navigation Controller
Доброго времени суток. В приложении есть Storyboard. В нем navigation controller выставлен как initial view controller. При первом запуске мне нужно показать один экран, при всех последующих - другой. Как изменить root view controller для navigation controller'a при первом запуске? Если делать UIStoryboard *mainStoryboard = ; UIViewController *mainViewController = ; UINavigationController...
Программирование iOS/iPhone Текст в таблице при первом запуске
Вечер добрый. Приложение при первом запуске скачивает из инета данные. Мне бы хотелось что бы при первом запуске приложения в первой ячейке таблицы показывался текст "Loading...". Вот как это сделать? В метод cellForRowAtIndexPath заходит только когда данные уже получены, соответственно там проверка пуст источник данных или нет не работает.
Программирование iOS/iPhone Xcode 6.0.1 не запускает ios симулятор http://www.cyberforum.ru/ios-dev/thread1336739.html
Начинающий разработчик )) Видимо так совпало, то на момент скачивания была версия именно 6.0.1. Сборка проходит успешно, а симулятор висит черным окном. Можно ли как-то установить старую версию xcode, где нет таких проблем?
Программирование iOS/iPhone Оптимальный eCpm для стран СНГ в Admob Здравствуйте! Готовлю свое приложение к выходу, и возник вопрос. В Admob надо выставлять eCpm, но я не знаю какой будет оптимальным для СНГ. У меня 3 сети подключенных к Admob: iAd, MMedia и сам Admob. Для начала хотел запрашивать iAd, затем Media и потом уже Admob. Но для всего этого опять же надо выставить eCpm. Прошу помощи у тех, кто работал с Admob. Какие eCpm стоят у вас? подробнее

Показать сообщение отдельно
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225

Архитектура для сетевого взаимодействия в приложении - Программирование iOS/iPhone

02.01.2015, 16:30. Просмотров 579. Ответов 3
Метки (Все метки)

Всем новогодний привет!))

Хотел бы поинтересоваться, как кто предпочитает организовывать у себя в проектах взаимодействие с server side?

У своих коллег вижу преимущественно что-то вроде синглтона, у которого есть куча методов с сигнатурой "запросить/отправить нечто с completion block'ом".
Как я пока из своего полуторагодового опыта понял, это самый распространенный вариант.

Однажды мне довелось разово работать в паре с одним разработчиком, у которого я подсмотрел иной метод организации сетевого общения, который мне очень понравился.
Суть там была в следующем:

Мы имеем два обобщенных базовых класса вроде Request и Responce.
У класса Request, отбросив нюансы, есть два метода:
Objective-C
1
2
- (void)executeWithCompletion:(SomeBlockTypedef)completion
- (Responce *)responce
Также в нем определен базовый URL, с которым мы общаемся.

У класса Responce что-то в этом роде:
Objective-C
1
2
- (id)initWithResponceDict:(NSDictionary *)responceDict
- (NSArray *)parsedData
В наследнике класса Request, каком-нибудь NewsRequest, переопределяем метод init нужным образом. Например:
Objective-C
1
- (id)initWithPageNumber:(NSInteger)pageNumber count:(NSUInteger)count;
А в методе
Objective-C
1
- (Responce *)responce
возвращаем конкретный подкласс респонса - NewsResponce.
В котором, в свою очередь, реализован парсинг для каждого конкретного ответа.

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

Objective-C
1
2
3
4
5
6
7
8
9
10
Request *request = [[ConcreteRequest alloc] initWithFirstParam:x secondParam:y];
 
    [request executeWithCompletion:^(NSError *error) {
        if (!error) {
            NSArray *responceArray = [userRequest.responce parsedData];
            SomeClass *obj = [responceArray firstObject];
            ...
        }
        else { ... }
    }];
Что вы скажете насчет такого подхода? Буду рад комментариям и критике))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru