有没有更好的方法从网络请求返回响应?

时间:2015-11-01 04:33:12

标签: ios swift

我创建了一个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)
    })
}

由于

1 个答案:

答案 0 :(得分:0)

你正在做的是正确的网络方式。

我唯一建议你拥有的是一个单独的网络包装器,它包含标题,正文和完成块,并代表其他人进行所有网络连接。

这样您就不需要及时处理NSMutableURLRequestNSURLSession等。使用简单的API调用您的自定义网络类,您就是好的。它还有助于调试集中在一个地方!