Intereting Posts
SCNShape с траекторией безье uicollection view загрузить больше данных в нижней строке прокрутки. iOS Swift executeFetchRequest: ошибка: зависает в основном потоке Xcode создает новую ветку каждый раз, когда я пытаюсь переключиться на другую с Git? iOS Как я могу добавить блок завершения в UIWebView loadRequest :? Пользователи не могут найти наше приложение в Apple App Store Скрыть «*** Первый стек вызова броска» в xcode 5 UITableView не отображается в зависимости от его высоты в iOS 7 Установка категории iTunes в приложении iOS Enterprise Упругое перетаскивание UIView подобно перетаскиванию из верхней части UITableView UIWebView не вызывает методы UIScrollViewDelegate Интеграция моего приложения с API Zillow iPhone быстрее, чем скорость инструмента для проверки инструментария инструментария? анимация рамок UITableView и contentOffset вместе Facebook Login: Как установить обратный вызов для входа в приложение IOS?

RxSwift – Пользовательский класс как наблюдаемый

Я создаю собственную универсальную модель TableView для работы с MVVM и RxSwift. Я знаю класс RxTableViewSectionedReloadDataSource но не хочу использовать его сейчас в моем проекте.

Модель создана и работает

 typealias TableViewModel = TableModel<CellDescriptor> class TableModel<T> { var sections = [SectionModel<T>]() func add(item: SectionModel<T>) { sections.append(item) } // More funcs there... } 

Я создал экземпляр внутри моего ViewModel как таковой:

 var tableViewModel = Variable<TableViewModel>(TableViewModel()) 

А затем послушайте событие в моем представлении Контроллер

 viewModel.tableViewModel.asObservable().subscribe({ [weak self] value in self?.tableView.reloadData() }).addDisposableTo(dispose) 

Несколько вопросов здесь (я довольно новичок в FRP):

  • Как я могу «испустить» событие для запуска моей подписки в viewController из моего пользовательского класса? Я знаю, что решением будет создание моего массива разделов как RxSwift Variable() а затем прослушать его напрямую, но задайтесь вопросом, есть ли способ сделать класс (или структуру) сам наблюдаемым.

  • Есть ли лучший подход к этой проблеме? Я прошел через игровую площадку RxSwift и примерный проект, но похоже, что существует тысяча способов сделать то же самое. Возможно, Observable не то, что я бы искал. 🙂

Не допускайте, чтобы сама модель просмотра наблюдалась. Это ненужная сложность, и это просто неинтуитивно. Если вы действительно этого хотели, посмотрите, как реализована Variable , которая должна дать вам представление о том, как это сделать.

Вместо этого просто используйте объект (например, Variable ) для хранения ваших данных в вашей модели представления.