无法在RxSwift中调用非函数类型错误的值?

时间:2018-08-27 13:32:14

标签: ios swift rx-swift reactive

你好,我是RxSwift和Swift的新手。

我遇到以下错误 “无法调用非函数类型的值((ResponseTestData)-> Swift.Void)吗?”

我的第一个问题是为什么我在调用onResult(result!)时会收到此错误?

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 :(得分:1)

首先,onResult是可选的,因此您需要使用可选的链接。因此,onResult(result!)变为onResult?(result!)

第二,如果您的fetchTestData返回了Observable<ResponseTestData>,则需要从!中删除result

所以我希望它看起来像这样:

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