ViewController.swift 这是我在viewDidLoad中的代码。
class ViewController: UITableViewController {
let dataManager = DataManager()
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
let viewModel = ViewModel()
viewModel.fetch(dataManager)
_ = viewModel.items.subscribe({ books in
print(books)
})
}
}
这是我在viewModel中实现项目的方式。 ViewModel.swift
import Foundation
import RxSwift
class ViewModel: ViewModelProtocol {
var isError: Bool = false
var message: String?
typealias T = Book
var items:Observable<[Book]> = Observable<[Book]>()
func fetch(_ dataManager: DataManager) {
dataManager.get(for: .book) { [weak self] results in
self?.items = Observable<[Book]>.create({ subscriber -> Disposable in
switch results {
case .success(let books):
subscriber.onNext(books as! [Book])
subscriber.onCompleted()
case .failure(let error):
subscriber.onError(error)
}
return Disposables.create()
})
}
}
}
答案 0 :(得分:0)
根据您提供的少量代码,我怀疑这是问题的根源:
var items:Observable<[Book]> = Observable<[Book]>()
永远不要将Observable设为var
。它们只能是let
常量。在事件发送过程中,您有可能会取消可观察性。
如果这不是正确的答案,那么在您发布证明问题的 complete 和 minimum 代码示例之前,我们将无法为您提供帮助。