RxSwift - фатальная ошибка: ошибка абстрактного метода - PullRequest
1 голос
/ 19 июня 2019

Может так помочь устранить эту ошибку 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 голосов
/ 23 июня 2019

Исходя из небольшого предоставленного вами кода, я подозреваю, что это корень вашей проблемы:

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

Никогда не делайте Observable var.Они должны быть только let константами.Скорее всего, вы деиницируете свою наблюдаемую, когда она находится в процессе отправки события.

Если это неправильный ответ, мы не сможем вам помочь, пока вы не отправите сообщение и минимальный пример кода, демонстрирующего проблему.

...