Skip to content

Test assignment master-detail application (loading data from internet + cache) written in swift

Notifications You must be signed in to change notification settings

dudarenko-io/TestAssignment_1

Repository files navigation

Требования - см. Baclog

Требований по поддержке версий iOS нет, проверяю работу приложения начиная с iOS 10
Приложение разрабатывается только для iPhone. (Для поддержки iPad можно было испоьзовать UISplitViewController)

Был выбран язык SWIFT, с помощью него возможно быстрее вести разработку данного проекта. (ха.ха.)
Согласно требованиям для хранения используется CoreData.
Для работы со сторонними зависимостями используются CocoaPods.
Для загрузки данных по сети используется Alamofire.
Для работы с индикатором загрузки iOS используется AlamofireNetworkActivityIndicator.

Архитектура:
В слое UI на списке новостей используется ViewModel с которой работает ячейка новости.
С WKWebView для нормального отображения контента нужно использовать CSS.
Сейчас контент отображается с использованием UITextView, контент обработаю с помощью NSAttributedString.
Для бизнес логики (загрузка данных, парсинг, сохранение в кэш) сделан отдельный компонент, закрытый протоколом NewsService. Компонент работает с зависимостями Transport, Parser, ErrorHanler закрытимы соответствующими протоколами, и стеком coreData.
Сборка компнент не была выделена в отдельный класс, чтобы не усложнять код, однако применен принцип dependency injection, сборка сервиса происходит в NewsListViewController.


Known issues:
1. в деталке по некоторым новостям приходят картинки. Так как отображение текста происходит в UITexView с помощью NSAttributedString, то загрузка картинок происходит синхронно в главном потоке(!). Картинки отображаются в некорректном масштабе.
Варинатны решения:
- парсить html, удалять теги с содержимым. Нужно знать все используемые теги...
- использовать WKWebView. Тогда нужен CSS, но опять же нужно знать все используемые теги.

About

Test assignment master-detail application (loading data from internet + cache) written in swift

Resources

Stars

Watchers

Forks

Packages

No packages published