ios - 'success' 中的成员 'SingleEvent<_>' 产生类型为 'SingleEvent<Element>' 的结果

标签 ios swift rx-swift

谁能解释一下这里的错误是什么?

Member 'success' in 'SingleEvent<_>' produces result of type 'SingleEvent<Element>', but context expects 'SingleEvent<_>'

我用泛型类型返回一个错误或成功的 Single 如果结果是 .success 我想在单个事件中传递 JSON

enter image description here

这是完整的代码

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]> .要么替换通用类型 UDictionary<String, Any>get函数,要么使TaskRequestManager.run接受通用类型。

关于ios - 'success' 中的成员 'SingleEvent<_>' 产生类型为 'SingleEvent<Element>' 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50776941/

相关文章:

swift - Rxswift + Moya + Realm

ios - MultipleSelectorRow 自定义

iphone - Segues 无法以编程方式工作

c++ - 在 Xcode 中诊断来自 Swift 的 iOS C++/Objective C++ 调用

Swift 3 - UIImageWriteToSavedPhotosAlbum 内存问题

ios - 是否可以使用 RxSwift 在输入字段数组上执行自定义 Binder ?

swift - Observable<Bool> If else 在 RxSwift 中

ios - iOS 应用程序中的自定义字体

iOS 屏幕使用 UIAccessibility 画外音不断刷新

ios - iPhone 在日期格式化程序上随机崩溃