【问题标题】:Cannot call value of non function type error in RxSwift?无法在 RxSwift 中调用非函数类型错误的值?
【发布时间】:2018-08-28 03:19:13
【问题描述】:

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

【问题讨论】:

    标签: ios swift rx-swift reactive


    【解决方案1】:

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

    其次,如果你的fetchTestData返回一个Observable<ResponseTestData>,那么你需要从result中删除!

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      相关资源
      最近更新 更多