RxSwift 中推荐的实现类 RACtryMap
功能的方法是什么?
以下代码是我如何将 json 对象映射到内部响应包装类。如果响应不符合某些条件,nil
将被返回,这将变成一个错误事件(tryMap 实现)。
extension RACSignal{
func mapToAPIResponse() -> RACSignal{
return tryMap({ (object) -> AnyObject! in
if let data = object as? [String:AnyObject]{
//Some Logic
return data["key"]
}
return nil
})
}
}
这应该如何在 RxSwift 中实现?
更新可能的解决方案
我为 Rx-Swift 提出了以下解决方案。打开以获得更好的解决方案。
extension Observable{
func mapToAPIResponse() -> Observable<APIResponse>{
return map({ (object) in
guard let dictionary = object as? [String:AnyObject] else{
//APIResponseError.InvalidResponseFormat is defined in other class.
throw APIResponseError.InvalidResponseFormat
}
let response = APIResponse()
//Complete API Response
return response
})
}
我的结论是在地图中使用 throw 来处理错误。