Небольшое ios приложение для оценки.
Текст задачи можно посмотреть внизу.
Задача простая - отобразить друзей пользователя и группы, на которые они подписаны. Интересных места два - работа с соцсетью ВК, которая инкапсулирована в классе VKInfoProvider и UTRemoteDataTableVC, который представляет из себя базовый ViewController для асинхронной загрузки данных из абстрактного источника и который поддерживает оптимизацию отображения при быстром скроллированни данных(необходимо по условиям задачи).
Обоснование для обертки над VKSDK, VKInfoProvider:
- Приложение может единообразно работать со многими соцсетями - через этот интерфейс с его типами, помимо VK, могут работать и FB, OK и прочие
- Нет зависимостей кода от сторонних библиотек - большая устойчивость архитектуры
- Вся работа с VK инкапсулирована в одном месте, а не размазана по всему проекту
- Единый метод обработки ошибок(в зачатке - смысла нет для такого мелкого приложения)
- В интерфейсе обертки используются лишь те данные и методы, которые нужны приложению, что способствует лучшей читабельности
- Возможно подсовывать вместо VK свои data provider'ы, таким образом либо тестируя приложение с синтетической БД, эмулируя различные test cases, либо предоставляя, например, демо-режим приложения, когда пользователь без Интернета и не залогиневшись, может попробовать функциональность приложения, чтобы оценить, нужно ли оно ему
- Libraries: сторонние библиотеки
- VKInfoProvider: все что касается класса VKInfoProvider, инкапсулирующего всю работу с VK API.
- VKTypes: типы данных, предоставляющие пользователя и группу VK
- VKInfoProvider: класс-синглтон, инкапсулирующий всю работу с VK API. Имеет очень простой внешний интерфейс. Все результаты возвращаются в типах данных из VKTypes. Разработан таким образом, чтобы полностью скрыть особенности работы VK API, этот же интерфейс с соответствующими реализациями может работать с разными источниками данных: VK, Facebook, Ok и прочие
- ViewControllers: различные ViewController'ы проекта
- RemoteDataTableVC: базовый ViewController для представления в виде списка объектов, которые запрашиваются асинхронно с удаленного источника. До окончания запроса показывает единствунную ячейку с Activity Indicator View
- FriendTableVC: представляет ViewController для отображения друзей, наследник RemoteDataTableVC
- UserGroupsTableVC: представляет ViewController для групп, в которых зарегистрирован пользователь, наследник RemoteDataTableVC
- Views: различные View проекта
- WaitingView: ячейка с Activity Indicator View
- FriendView: ячейка, которая отображает данные о пользователе
- Main.storyboard: storyboard проекта
Разработать небольшое приложение, которое будет получать список друзей пользователя в социальной сети vk.com после авторизации.
Требования к приложению:
- При входе в приложение предлагать пользователю авторизоваться через vk
- После авторизации отобразить список друзей
- Содержимое ячейки с другом: фамилия, имя, город, университет
- Аватарки загружать асинхронно
- в списке необходимо реализовать возможность обновления данных (Pull-to-refresh)
- в списке необходимо реализовать возможность поиска друга (любое из вхождение по параметрам имя, фамилия, город или университету)
- при клике на ячейку открывать Detail Controller, на котором необходимо отобразить список групп выбранного пользователя
- особое внимание уделить быстродействию
- приложение должно поддерживать iOS 7
- приложение должно одинаково “хорошо” отображаться на всех устройствах, интерфейс нужно проектировать с использованием Autolayout и/или Size Classes