2017-05-16 15 views
-1

私は非常に迅速です。私はこのような方法を持っています。完了ハンドリングでメソッドを呼び出す方法3 +

public func prepareUrl (appendString:String,bindedParams:String,isAuthorized:Bool,isGet:Bool,jsonBody:[String:String],completion:@escaping(String)->Void) 
{ 

    let baseUrl=Bundle.main.value(forKey: "GlobalURL") 
    let urlString=baseUrl as! String+appendString as String+bindedParams as String 
    Alamofire.request(urlString, method: .get, parameters: nil, encoding: JSONEncoding.default) 
     .downloadProgress(queue: DispatchQueue.global(qos: .utility)) { progress in 
      print("Progress: \(progress.fractionCompleted)") 
     } 
     .validate { request, response, data in 
      // Custom evaluation closure now includes data (allows you to parse data to dig out error messages if necessary) 
      return .success 
     } 
     .responseJSON { response in 
      debugPrint(response) 
    } 


} 

このメソッドを呼び出す方法はわかりません。このメソッドも補完ハンドラ部分があるためです。どうすればこのメソッドを呼び出すことができますか?私を助けてください。このようなメソッドを呼び出すために おかげ

答えて

0

はこれを試してみてください:

:この答えは、たとえばです。あなたは閉鎖

self.getResponse(url: "", method: .post, parameter: ["Email" : "" as AnyObject, "Password" : "" as AnyObject], Alert: true) { (responseObject, success) in 
      if success{ 

      } 
     } 
を用いた方法の呼び出し

func getResponse(url: String, method : HTTPMethod, parameter : [String : AnyObject], Alert : Bool, callback: @escaping responseHandler) -> Void{ 

     Alamofire.request(API_PREFIX + url, method: method, parameters: parameter).validate().responseJSON { response in 
      switch response.result { 
      case .success: 
       if let result = response.result.value { 
        let JSON = result as! [String : AnyObject] 
        print("\(JSON as AnyObject)") 
        callback(JSON as AnyObject, true) 
       } 
      case .failure(let error): 
       print(error) 
       callback({} as AnyObject, false) 
      } 
     } 
    } 

ニーズに従ってを変更する必要があります
1

self.prepareUrl(appendString: "www.some.com/api/likeLogin", bindedParams: "name=lee", isAuthorized: false, isGet: true, jsonBody: ["key":"value"]) { (returnString) in 
    if returnString == "someValue" { 
     //do something 
    } 
    else{ 
    } 
} 

そして、この方法では、あなたは次のように、値を返すように補完を呼び出す必要があります:メソッド名がprepareUrlですが

.responseJSON { response in 
    completion("aReturnString") 
} 

、それ実際にWebApiを要求するので、名前をrequestに変更する方が良いです。

関連する問題