Давайте начнем с вашей выборки.
func fetchAllData() -> Observable<[MyDataObject]> {
Observable.just(coreData.fetchAll(fetchRequest: NSFetchRequest<MyDataObject>(entityName: "MyDataObject")))
}
(Выше приведено то же самое, что и ваша fetchAllData, но более кратко.)
Теперь подумайте обо всех причинах, которые вам могут понадобиться чтобы получить данные ... Допустим, у вас есть кнопка refre sh, и вы хотите получить все данные только тогда, когда пользователь нажимает эту кнопку. Тогда в вашем viewDidLoad
(или в функции, которая вызывается из него) у вас будет:
let allData = refreshButton.rx.tap
.flatMap {
fetchAllData()
}
и, скажем, мы хотим отобразить данные в табличном представлении. По каким причинам мы хотели бы перезагрузить данные в представлении? Скажем, единственная причина, по которой мы хотим перезагрузить данные, это когда allData
выдает значение. Тогда также в viewDidLoad
(или функции, вызываемой из него) вы должны иметь:
allData
.bind(to: tableView.rx.items(cellIdentifier: Cell.identifier, cellType: Cell.self)) { row, data, cell in
cell.viewModel = data
}
.disposed(by: disposeBag)
Там мы go, это просто.
Теперь, конечно, вещи получат больше сложный, когда вы представляете себе другое время, когда вам может потребоваться получить все данные, но вышеизложенное является основами.