2017-04-02 213 views
1

我被困在Swift项目中。我从按钮IBAction调用“SendPost”,我需要它从Alamofire.request返回数据,但我不知道如何达到这个目的。我无法从Alamofire.request获取“utf8Text”变量。我怎样才能获得数据?Swift - 从Alamofire POST请求获取数据

谢谢。 :)

import Foundation 
import Alamofire 


    func SendPost(parameters: Parameters) -> String { 

    Alamofire.request("https://hovnocuc.com/main.php", method: .post, parameters: parameters).response { response in 
     print("Request: \(response.request)") 
     print("Response: \(response.response)") 
     print("Error: \(response.error)") 

     if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) { 
      print("Data: \(utf8Text)") 

     } 
    } 

return "I don't know. :("; 
} 
+0

你在if let行有一个流氓支架。删除它,然后再试一次 – Blaze349

回答

0

与下面的代码尝试

func SendPost(parameters: Parameters) -> [String,AnyObject] { 

     let urlstring= "https://hovnocuc.com/main.php" 
     Alamofire.request(.POST, urlstring, parameters: parameters, encoding: .JSON).responseJSON { response in 

         if let JSON = response.result.value { 
          print("JSON: \(JSON)") 
          return JSON 
         } 
        } 
       return "I don't know " 
      } 
0

对于斯威夫特3

使用完毕返回去从请求获得的数据:

首先创建一个typealias其将用作封口:

typealias SendPostCompletion = (_ data: String) -> Void

然后:

@IBAction func yourAction(_ sender: UIButton) { 
     SendPost(parameters: ...) { (data) in 
      print(data) 
     } 
} 

func SendPost(parameters: Parameters, completion: @escaping SendPostCompletion) -> String { 

     Alamofire.request("https://hovnocuc.com/main.php", method: .post, parameters: parameters).response { response in 
      print("Request: \(response.request)") 
      print("Response: \(response.response)") 
      print("Error: \(response.error)") 

      if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) { 
       var data = ("Data: \(utf8Text)") 
       completion(data) 
      } 
     } 

     completion("I don't know. :(") 
} 

希望它可以帮助你!