谁能解释一下这里的错误是什么?
Member 'success' in 'SingleEvent<_>' produces result of type 'SingleEvent<Element>', but context expects 'SingleEvent<_>'
我用泛型类型返回一个错误或成功的 Single 如果结果是 .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
的返回类型功能是Single<U>
, 同时调用 single(.success(JSON))
通过指定具体类型违反了这一点 Single<[String: Any]>
.要么替换通用类型 U
与 Dictionary<String, Any>
在get
函数,要么使TaskRequestManager.run
接受通用类型。
关于ios - 'success' 中的成员 'SingleEvent<_>' 产生类型为 'SingleEvent<Element>' 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50776941/