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

Cannot call value of non function type error in RxSwift?

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

我收到以下错误 "Cannot call value of non function type ((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)

首先,onResult是一个Optional,所以你需要使用optional chaining。因此,onResult(result!) 变为 onResult?(result!)

其次,如果您的 fetchTestData returns 和 Observable<ResponseTestData>,那么您需要从 result 中删除 !

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

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