gpt4 book ai didi

ios - 无法读取 Swift AsynchronousRequest 响应

转载 作者:行者123 更新时间:2023-11-29 01:17:52 25 4
gpt4 key购买 nike

我正在尝试从一个用 Swift 编写的 iOS 应用程序连接到一个数据库。我找不到替代所有其他功能的功能,这些功能已在最新的 iOS 更新(9.2?)中标记为已弃用。其中一些函数是 sendSynchronousRequest 和 sendAsynchronousRequest。

我想从数据库中读取数据和响应。我正在使用以下代码:

 NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: {(response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in
let res = response as! NSHTTPURLResponse
if(res.statusCode >= 200 && res.statusCode < 300) {
let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
}
})

我在第一行遇到错误:

Invalid conversion from throwing function of type '(NSURLResponse?, NSData?, NSError?) throws -> Void' to non-throwing function type '(NSURLResponse?, NSData?, NSError?) -> Void'

但是,当我注释掉 if 语句中的行(let jsonData:NSDictionary = try ...)时,错误消失了。

我知道这个函数已被弃用;我找不到其他东西。

如何正确读取 AsynchronousRequest 的响应?

最佳答案

你错过了 do/catch block

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response, data, error) -> Void in
let res = response as! NSHTTPURLResponse
do {
if(res.statusCode >= 200 && res.statusCode < 300) {
let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
}
} catch {

}
}

但是在 swift 中更简单更好的方法是这个网络库:Alamofire

例子:

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
.responseJSON { response in
print(response.request) // original URL request
print(response.response) // URL response
print(response.data) // server data
print(response.result) // result of response serialization

if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}

关于ios - 无法读取 Swift AsynchronousRequest 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34947233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com