我创建了一个Authentication类(我将其视为模型),它接受登录凭据和闭包。闭包返回网络请求对控制器的响应。我只是想知道这是否是一种更好的方法,如果不是最好的方法呢?
注意:我正在使用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()
}
控制器
override func viewDidLoad() {
super.viewDidLoad()
authentication.login("test@test.com", password: "test", completionHandler: {(response: JSON) -> () in
print(response)
})
}
由于
答案 0 :(得分:0)
你正在做的是正确的网络方式。
我唯一建议你拥有的是一个单独的网络包装器,它包含标题,正文和完成块,并代表其他人进行所有网络连接。
这样您就不需要及时处理NSMutableURLRequest
,NSURLSession
等。使用简单的API调用您的自定义网络类,您就是好的。它还有助于调试集中在一个地方!