【问题标题】:RxSwift - Fatal error: Abstract method errorRxSwift - 致命错误:抽象方法错误
【发布时间】:2019-06-18 22:22:20
【问题描述】:

能否帮助解决此错误

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

        }
    }
}

【问题讨论】:

  • 你为什么不向我们展示从视图中加载的崩溃代码行?
  • 我确实添加了代码。谢谢
  • 请添加一个可以重现错误的最小代码示例。您没有添加足够的代码。我预计您定义items 的方式有问题。
  • 是的。对不起。刚刚编辑。谢谢

标签: observable rx-swift


【解决方案1】:

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

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

永远不要将 Observable 设为 var。它们只能是let 常量。当您正在发送事件时,您可能正在取消初始化您的可观察对象。

如果这不是正确答案,那么在您发布完整最小代码示例演示问题之前,我们将无法帮助您。

【讨论】:

    猜你喜欢
    • 2013-09-19
    • 1970-01-01
    • 2016-04-26
    • 2019-03-18
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多