无法在 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)
},
你好,我是 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)
},