ios - “SingleEvent<_>”中的成员“成功”产生“SingleEvent”类型的结果'
问题描述
有人可以解释这里的错误是什么吗?
Member 'success' in 'SingleEvent<_>' produces result of type 'SingleEvent<Element>', but context expects 'SingleEvent<_>'
如果结果案例是 .success 我想在单个事件中传递 JSON,我会使用泛型类型返回单个错误或成功
这是完整的代码
import Foundation
import RxSwift
public class APIClient<T: APIProtocol> {
var disposeBag: DisposeBag = DisposeBag()
}
extension APIClient {
public func get<U>(apiService: T, key: String) -> Single<U> {
return Single.create { single in
let task = TaskRequestManager.run(apiService, completion: { result in
DispatchQueue.main.async {
switch result {
case .error(let error):
single(.error(error))
case .success(let json):
guard let JSON = json[key] as? [String: Any] else {
single(.error(ApiError.jsonParsingFailure))
return
}
single(.success(JSON))
}
}
})
task.resume()
return Disposables.create {
task.cancel()
}
}
}
}
解决方案
函数的返回类型get
is Single<U>
,而调用 ofsingle(.success(JSON))
则通过指定具体类型违反了这一点Single<[String: Any]>
。U
要么用Dictionary<String, Any>
inget
函数 替换泛型类型,要么TaskRequestManager.run
接受泛型类型。
推荐阅读
- python - 打开文本文件,在两个字符串之间复制数据,转置和连接
- html - 添加 ui.bootstrap 后 Ng-view 不显示
- c# - 以其他用户身份启动后台进程而不显示窗口
- javascript - service-worker.js 和谷歌分析
- javascript - 在 WordPress foreach 循环中使用 jQuery 脚本
- java - 无法在java eclipse中读取src文件夹外的html文件
- react-native - 如何处理或防止在反应原生模态上按下硬件后退按钮?
- qt - 移动窗口时如何获取小部件的新坐标?
- sql-server - 如何将重复记录汇总到查询结果中的特定记录
- spring - 将 Spring Boot 1.5.10 迁移到 2.0.6 时出错