2017-03-22 3 views
0

この質問はダムになるかもしれませんが、Alamofire 4.0のようなオプションのレスポンス(responseJSON、responseData、responseStringなど)を作成する方法を探していました。例えば、私のプロジェクトでは、(alamofireを使って)リクエストを行い、その後レスポンスを処理するBaseServiceを持っています(エラーの場合は、メッセージを表示する例外クラスを呼び出してフローを破棄します)。したがって、私はBaseServiceから継承するサブクラスを持っていて、私のメソッドには、BaseServiceから任意のデータ(または必要であればエラー)を解析して渡す補完ブロックがあります。Alamofireレスポンスのようなブロックレスポンスを作成するには?

Theen、私の質問は:私のBaseService要求機能は、応答、JSONまたはエラー、EX(ブロックとして)返すことがあります。completionHandler(応答、JSON、エラー)またはcompletionHandler(nilに、JSON、ゼロ)

だから私はちょうど私がこのようにやってきましたnilをエラーがないかどうかを確認したい、応答またはJSONを必要としないとき:

myFuncという()

{(_ _、エラー)で}

ブロックを取得するにはどうすればよいですか? Alamofireのように彼の反応は?

答えて

1

あなたがonSuccessonFailに、各サービス機能にあなたBaseServiceクラスであなたのcompletionHandlerを分割することができます...など

例:

func logInUser(_ userEmail : String, userPassword : String, onSuccess: @escaping (Any?)-> Void, onFail : @escaping (Error?) ->(Void)) { 

    let url : URLConvertible = urls.loginUser 

    let parameters = ["email" : userEmail, "password" : userPassword] 

    let header = ["Authorization" : APPSECRETKEY ] 

    alamofireManager.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: header).responseJSON(completionHandler: { response in 

     if response.result.value != nil && response.result.error == nil { 

     onSuccess(response.result.value) 

     } 
     else 
     { 
      onFail(response.result.error) 

     } 
    }) 

} 

あなたのサービス機能を呼び出す:

BaseService.sharedInstance.logInUser("email", userPassword: "password", 

          onSuccess: { responseValue in 



          }, 

          onFail: { error in 





          }) 
+0

thats完璧!どうもありがとうございました! – Gehlen

+0

こんにちは@Ayman関数の宣言で直接このブロックオプションを作る方法がありますか?それで、必要な場合にのみ、「onSuccess」または「onFail」と呼ぶことができます。 – Gehlen

関連する問題