我创建了一个 Authentication 类(我将其视为一个模型),它接受登录凭据和一个闭包。闭包将网络请求的响应返回给 Controller 。我只想知道这是否是更好的方法,如果不是,最好的方法是什么?
注意:我正在使用 SwiftyJson 库
模型函数
func login(userName: String, password: String, completionHandler: (response: JSON) -> ()) {
let device = UIDevice().identifierForVendor
let postData = "login=\(userName)&password=\(password)&deviceid=\(device)"
let request = NSMutableURLRequest(URL: NSURL(string: APP_SERVICE_LOGIN)!)
request.HTTPMethod = HTTP_REQUEST_POST
request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) -> Void in
if (error == nil) {
completionHandler(response: JSON(data: data!))
} else {
print("Error = \(error)")
print("Response = \(response)")
}
}
task.resume()
}
Controller
override func viewDidLoad() {
super.viewDidLoad()
authentication.login("test@test.com", password: "test", completionHandler: {(response: JSON) -> () in
print(response)
})
}
谢谢
最佳答案
你这样做是正确的社交方式。
我唯一建议您拥有的是一个单独的网络包装器,它采用 header 、正文和完成 block ,并代表其他人进行所有网络连接。
这样你就不需要一次又一次地处理 NSMutableURLRequest
, NSURLSession
等等。使用简单的 API 调用自定义网络类就可以了。它还有助于集中到一个地方进行调试!
关于ios - 有没有更好的方法来返回网络请求的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33459238/