RxSwift-致命错误:抽象方法错误

时间:2019-06-18 22:22:20

标签: observable rx-swift

可以帮助解决此错误 enter image description here

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

        }
    }
}

1 个答案:

答案 0 :(得分:0)

根据您提供的少量代码,我怀疑这是问题的根源:

var items:Observable<[Book]> = Observable<[Book]>()

永远不要将Observable设为var。它们只能是let常量。在事件发送过程中,您有可能会取消可观察性。

如果这不是正确的答案,那么在您发布证明问题的 complete minimum 代码示例之前,我们将无法为您提供帮助。