使用有关连接我的 sql 的旧教程实现 swift 的新 try catch

implementing swift's new try catch with older tutorial on connecting with my sql

您好,我正在努力使用有关连接到 mysql 数据库的旧教程来实现 swifts new try catch。

这是旧教程的代码:

func getPost(callback:(NSDictionary) -> ()){
    request("http://myurl.php", callback: callback)
}

func request(url:String, callback:(NSDictionary) -> ()){
    var nsURL = NSURL(string: url)

    let task = NSURLSession.sharedSession().dataTaskWithURL(nsURL!){
        (data, response, error) in
        var error:NSError?
        var response = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as NSDictionary
        callback(response)
    }
    task.resume()
}

这是我尝试实现 try catch 的失败尝试,因为它想要它而不是响应 var

中的错误
func getPost(callback:(NSDictionary) -> ()){
    request("http://url.php", callback: callback)
}

func request(url:String, callback:(NSDictionary) -> ()){
    var nsURL = NSURL(string: url)

    let task = NSURLSession.sharedSession().dataTaskWithURL(nsURL!){
        (data, response, error) in

        do {
            var response = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
            callback(response)
        } catch error& {

        }



    }
    task.resume()
}

非常感谢有人帮助我正确设置语法,谢谢!

完整的工作代码:

func getFleet(){
    getPost{
        (response) in
        print(response)
    }
}

func getPost(callback:(NSDictionary) -> ()){
    request("http://url.com/SpaceAcademy/SaveFleet.php", callback: callback)
}

func request(url:String, callback:(NSDictionary) -> ()){
    let nsURL = NSURL(string: url)

    let task = NSURLSession.sharedSession().dataTaskWithURL(nsURL!) { (data, nsURLResponse, error) -> Void in
        if let error = error {
            //act on error from server
        } else {
            do {
                var response = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
                callback(response)
            } catch {
                // act on thrown error
            }
        }
    }
    task.resume()
}

catch 不捕获来自服务器的错误,仅捕获解析 json 数据时可能抛出的错误。你需要同时处理它们。

func request(url:String, callback:(NSDictionary) -> ()){
    let nsURL = NSURL(string: url)

    let task = NSURLSession.sharedSession().dataTaskWithURL(nsURL!) { (data, nsURLResponse, error) -> Void in
        if let error = error {
            //act on error from server
        } else {
            do {
                var response = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
                callback(response)
            } catch {
                // act on thrown error
            }
        }
    }
    task.resume()
}