2017-01-28 12 views
3

私はMoya,Moya_ModelMapperおよびRxSwiftを使用してネットワーク要求を行っています。 はここに私のコード例です:`MoyaError`からエラーstatusCodeを取得する方法は?

let provider = RxMoyaProvider<MyEndpoint>() 
let observable: Observable<RegistrationResponse> = provider.request(.register(firstName: "", lastName: "", email: "", password: "")).mapObject(type: RegistrationResponse.self) 
observable.subscribe { 
    [weak self] (event: Event<RegistrationResponse>) in 
    switch event { 
    case .next(let response): 
     print(response) 
    case .error(let error): 
     print(error) 
    case .completed: 
     break 
    } 
} 

すべてが正常に動作しますが、私は、たとえば、サーバから409のステータスコードの応答タイプを受信したときにエラーコードを取得する方法がわかりません。 私はエラーを印刷する場合、私が取得します:

jsonMapping(Status Code: 409, Data Length: 0)

が、私はコードでこのステータスコードを取得する方法がわかりません。エラーは、列挙型のMoyaErrorです。ここではMoyaErrorのsource codeです。

ありがとうございます!直接エラーコードが含まれていない、彼らは順番に行うMoyaResponsesを含まないコメント

Aモヤエラーからの移行

+2

「error.response.statuscode」はそれでもかまいませんか?レスポンスにはステータスコードが含まれているためです。エラーには応答が含まれています。 – milo526

+1

'(!MoyaErrorとしてのエラー).response?.statusCode' works!おかげでたくさん – kamwysoc

答えて

10

は、エラーコードが含まれています。

オプションMoyaErrorは、我々が得るオプションのチェーンを使用して、オプションの応答が含まれていますMoyaError

let moyaError: MoyaError? = error as? MoyaError 

などとして、まずケースエラー:

let response : Response? = moyaError?.response 

最後に、我々は、応答にそのステータスコードを取得することができます。

let statusCode : int? = response?.statusCode 
+0

うわー!!あなたの答えは私の人生を救った...千回ありがとう!! –

+0

本当に有益です –

関連する問題