ios - 无法在 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)
解决方案
首先,onResult
是一个 Optional,所以你需要使用可选链。因此,onResult(result!)
变成onResult?(result!)
其次,如果您fetchTestData
返回一个Observable<ResponseTestData>
,那么您需要删除!
from result
。
所以我希望它看起来像这样:
.subscribe(onNext: { (result : ResponseTestData) -> Void in
onResult?(result)
print(result)
},
推荐阅读
- visual-studio - 如何在excel中注册自定义函数添加到不同的视图
- python - Python 可以看到 `json` 模块,但 pipenv 没有。为什么?
- pyspark - pyspark 加入两个 rdd 并将结果展平
- android - Google Analytics(分析)屏幕跟踪的“屏幕名称”是否区分大小写?
- c++ - shared_ptr 的 unordered_set 找不到它存储的等效对象
- r - 为什么我们总是将 .csv 文件导入 R 而不是 .xls 文件?
- java - 包含 0 和 4-9(4 ,5,6,7,8,9) 的字符串的正则表达式模式
- cordova - 如何关闭应用程序,但将其保留在后台(睡眠)
- excel - 如何重叠在 VBA 中所做的更改
- javascript - 为什么控制台中有“未定义”?