首页 > 解决方案 > 无法在 RxSwift 中调用非函数类型错误的值?

问题描述

你好,我是 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)

标签: iosswiftrx-swiftreactive

解决方案


首先,onResult是一个 Optional,所以你需要使用可选链。因此,onResult(result!)变成onResult?(result!)

其次,如果您fetchTestData返回一个Observable<ResponseTestData>,那么您需要删除!from result

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

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

推荐阅读