你好,我是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)
答案 0 :(得分:1)
首先,onResult
是可选的,因此您需要使用可选的链接。因此,onResult(result!)
变为onResult?(result!)
第二,如果您的fetchTestData
返回了Observable<ResponseTestData>
,则需要从!
中删除result
。
所以我希望它看起来像这样:
.subscribe(onNext: { (result : ResponseTestData) -> Void in
onResult?(result)
print(result)
},