Не удается вызвать значение ошибки не функционального типа в RxSwift? - PullRequest
0 голосов
/ 27 августа 2018

Здравствуйте, я новичок в RxSwift и Swift.

Я получаю следующую ошибку "Невозможно вызвать значение не относящегося к типу функции ((ResponseTestData) -> Swift.Void)?"

Мой первый вопрос: почему я получаю эту ошибку при вызове onResult (результат!) ???

func getTestList(perPage : String, pageNum : String, onResult: ((ResponseTestData) -> Swift.Void)? = nil, onFail: ((Error) -> Swift.Void)? = nil, disposeBag : DisposeBag)
{
    let tmpRx : RxManager
    tmpRx = RxManager()

    tmpRx.fetchTestData(perPage : perPage, pageNum : pageNum)
        .debug()
        .observeOn(MainScheduler.instance)
        .subscribeOn(MainScheduler.instance)
        .subscribe(
            onNext:
            {
                (result : ResponseTestData)->() in
                onResult(result!)
                print(result.result!)
            },
            onError:
            {
                _ in
                print("")
            },
            onCompleted:
            {
                print("")
            }

        )
        .disposed(by: disposeBag)

1 Ответ

0 голосов
/ 27 августа 2018

Во-первых, onResult является необязательным, поэтому вам необходимо использовать необязательную цепочку. Следовательно, onResult(result!) становится onResult?(result!)

Во-вторых, если ваш fetchTestData возвращает Observable<ResponseTestData>, вам нужно удалить ! из result.

Так что я ожидаю, что это будет выглядеть так:

.subscribe(onNext: { (result : ResponseTestData) -> Void in
        onResult?(result)
        print(result)
},
...