Вы любите кофе? У нас это есть!
Love coffee? We got you!
Информацию про внутреннюю инфраструктуру и организацию Nephew-Ustas можно найти тут.
Модуль Localize
Интерфейс локализации - ILocalizable.
Чтобы добавить новый сервис локализации, необходимо исполнить требования ILocalizable и добавить требуемые строки:
class AppLocalization: ILocalizable {
static let table: String = "App"
static let name = AppLocalization.localize("name")
}после этого в соответствующей таблице App.strings нужно определить локализацию строк:
// App (English)
"name" = "The Bean";// App (Russian)
"name" = "Зе рно";Модуль AssetsManager
Интерфейс IAssetsManager позволяет использовать в коде файлы из папки Assets
Например, для получения картинок реализован класс ImageManager:
class ImageManager: IAssetsManager {
typealias Asset = UIImage
static let latte = ImageManager.asset(for: "coffee.latte")
}Тогда в коде следует использовать ImageManager.latte
Модуль Reactive
Модуль позволяет просто создавать и использовать реактивщину в приложении. Все публикации и подписки сделаны на базе Combine
Класс Publisher позволяет создавать публикации изменений и подписываться на них.
Чтобы создать публикацию используется метод publishPost<T>(with:, for:).
Для подписки на обновления используется метод subscribe<T>(_: T, keyPath:, for:).
Таким образом, для подписания текста лейбла на обновления имени аккаунта используется следующий код:
let label = UILabel()
Publisher.subscribe(label, keyPath: \.text, for: .usernamePost)Для того, чтобы опубликовать изменения имени, можно использовать такой код:
Publisher.publishPost(with: username, for: .usernamePost)В примерах выше используется
extension Notification.Name {
static let usernamePost = Notification.Name("usernamePost")
}Модуль AdvancedGraphics
Модуль позволяет добавлять графические элементы в приложение
Объекты реализованы как расширения классов, например UIBezierPath
Модуль Utils
Модуль добавляет функциональность, необходимую для приложения. Это могут быть расширения или классы для упрощения разработки - для избежания дублирования кода.