2017-02-02 4 views
2

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

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

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()) 

А потом слушать событие в моей ViewController

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

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

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

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

ответ

1

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

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

Смежные вопросы