2017-04-05 60 views
0

我正在使用RxAlamorefire來處理我的應用中的網絡任務。如何使用密鑰獲取json時發出錯誤

我的問題是:當我提出請求並返回json。如果json有一個鍵「錯誤」,我需要發出錯誤通知,而不是onNext通知。

我的代碼是像這樣的:

let observable = RxAlamofire.json(.get, url, parameters: nil, encoding: URLEncoding.default, headers: header) 
.map { (json) -> SomeObject? in 
//Should check json maybe not in ".map" to see if the json contain "error" then emit onError notification. 
return Mapper<SomeObject>().map(JSONObject: json) 
} 

回答

1

map,您可以使用throw關鍵字發送和錯誤

let observable = request.map { (json) -> SomeObject in 
    if let error = json["error"] as? [AnyHashable: Any] { 
    throw Mapper<ErrorObject>().map(JSONObject: error) 
    } else { 
    // regular deserialization 
    } 
} 

這將導致可觀察到發射類型的錯誤當json包含error鍵時ErrorObject