sendAsynchronousRequest 在 iOS 9 (Swift 2) 中被弃用 - 传输代码?
sendAsynchronousRequest was deprecated in iOS 9 (Swift 2) - Transfer Code?
我正在使用 XCode 7.3。这是我的代码:
func postToServerFunction() {
let url: NSURL = NSURL(string: "http://mytesturl.com")!
let request:NSMutableURLRequest = NSMutableURLRequest(URL:url)
//let textfeld = String(UserTextField.text)
let bodyData = "data=" + UserTextField.text!
request.HTTPMethod = "POST"
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding);
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
{
(response, data, error) in}}
这很好用,我的 php-Script 得到了它应该得到的字符串。但是有
sendAsynchronousRequest
在 iOS 9 中被弃用
信息。
正如我所读, Swift 2 方法已经改变。
我搜索了很多这个错误,但我无法将它匹配的代码转换为 Swift 2。正如我也读到的,我应该使用这样的东西
let session = NSURLSession.sharedSession()
session.dataTaskWithRequest(request)
但是我记不下来。实际上,我并不理解每一行。我自己写了代码,但从一些例子来看它对我有用。
这是您使用共享会话的最基本方式:
if let url = NSURL(string: "http://mytesturl.com"),
userField = UserTextField.text {
let request = NSMutableURLRequest(URL: url)
let bodyData = "data=" + userField
request.HTTPMethod = "POST"
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding)
let session = NSURLSession.sharedSession()
let dataTask = session.dataTaskWithRequest(request,completionHandler: {(data,response,error) in
}
)
dataTask.resume()
}
有关其他方法的更多详细信息,包括后台和临时会话,以及如何处理 NUSRLResponse
,请参阅 my blogpost。
如您所知,NSURLConnection
已被弃用,NSURLSession
是新亮点。
为了使您的示例生效,您仍然需要使用您已经创建的 NSURL
和 NSURLRequest
,然后您需要一个 NSURLSession
,您可以在各种方法。
我可以看到你已经使用了回调,所以在你的情况下我假设它是
session.dataTaskWithRequest(request) { (data, response, error) in
//magic goes here
}
然后重要的是要记住在你的任务中调用 resume()
。
所以...为了翻译您的代码,我正在考虑这些问题
func postToServerFunction() {
let url: NSURL = NSURL(string: "http://mytesturl.com")!
let request:NSMutableURLRequest = NSMutableURLRequest(URL:url)
//let textfeld = String(UserTextField.text)
let bodyData = "data=" + UserTextField.text!
request.HTTPMethod = "POST"
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding)
let session = NSURLSession.defaultSession()
let task = session.dataTaskWithRequest(request) { (data, response, error) in
//magic goes here
}
task.resume()
}
您可以在此 tutorial from raywenderlich.com
中阅读有关 NSURL 会话的更多信息
希望对您有所帮助
我正在使用 XCode 7.3。这是我的代码:
func postToServerFunction() {
let url: NSURL = NSURL(string: "http://mytesturl.com")!
let request:NSMutableURLRequest = NSMutableURLRequest(URL:url)
//let textfeld = String(UserTextField.text)
let bodyData = "data=" + UserTextField.text!
request.HTTPMethod = "POST"
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding);
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
{
(response, data, error) in}}
这很好用,我的 php-Script 得到了它应该得到的字符串。但是有
sendAsynchronousRequest
在 iOS 9 中被弃用
信息。
正如我所读, Swift 2 方法已经改变。
我搜索了很多这个错误,但我无法将它匹配的代码转换为 Swift 2。正如我也读到的,我应该使用这样的东西
let session = NSURLSession.sharedSession()
session.dataTaskWithRequest(request)
但是我记不下来。实际上,我并不理解每一行。我自己写了代码,但从一些例子来看它对我有用。
这是您使用共享会话的最基本方式:
if let url = NSURL(string: "http://mytesturl.com"),
userField = UserTextField.text {
let request = NSMutableURLRequest(URL: url)
let bodyData = "data=" + userField
request.HTTPMethod = "POST"
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding)
let session = NSURLSession.sharedSession()
let dataTask = session.dataTaskWithRequest(request,completionHandler: {(data,response,error) in
}
)
dataTask.resume()
}
有关其他方法的更多详细信息,包括后台和临时会话,以及如何处理 NUSRLResponse
,请参阅 my blogpost。
如您所知,NSURLConnection
已被弃用,NSURLSession
是新亮点。
为了使您的示例生效,您仍然需要使用您已经创建的 NSURL
和 NSURLRequest
,然后您需要一个 NSURLSession
,您可以在各种方法。
我可以看到你已经使用了回调,所以在你的情况下我假设它是
session.dataTaskWithRequest(request) { (data, response, error) in
//magic goes here
}
然后重要的是要记住在你的任务中调用 resume()
。
所以...为了翻译您的代码,我正在考虑这些问题
func postToServerFunction() {
let url: NSURL = NSURL(string: "http://mytesturl.com")!
let request:NSMutableURLRequest = NSMutableURLRequest(URL:url)
//let textfeld = String(UserTextField.text)
let bodyData = "data=" + UserTextField.text!
request.HTTPMethod = "POST"
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding)
let session = NSURLSession.defaultSession()
let task = session.dataTaskWithRequest(request) { (data, response, error) in
//magic goes here
}
task.resume()
}
您可以在此 tutorial from raywenderlich.com
中阅读有关 NSURL 会话的更多信息希望对您有所帮助