ios – Swift 2上的同步URL请求

ios – Swift 2上的同步URL请求,第1张

概述我有这个代码从 here做同步请求的一个URL在Swift 2. func send(url: String, f: (String)-> ()) { var request = NSURLRequest(URL: NSURL(string: url)!) var response: NSURLResponse? var error: NSErrorPointer = ni 我有这个代码从 here做同步请求的一个URL在Swift 2.
func send(url: String,f: (String)-> ()) {    var request = NSURLRequest(URL: NSURL(string: url)!)    var response: NSURLResponse?    var error: NSErrorPointer = nil    var data = NSURLConnection.sendSynchronousRequest(request,returningResponse: &response,error: error)    var reply = Nsstring(data: data,enCoding: NSUTF8StringEnCoding)    f(reply)  }

但是NSURLConnection.sendSynchronousRequest(请求,返回响应:&响应,错误:错误)的函数已被弃用,我看不到如何在Swift上执行同步请求,因为替代方法是异步的.显然,苹果不推荐使用唯一可以同步进行的功能.

我怎样才能做到这一点?

解决方法 有一个原因背后贬低 – 没有任何用处.您应该避免同步网络请求作为瘟疫.它有两个主要问题,只有一个优点(它很容易使用,但不是异步的)

>请求阻止您的UI,如果不是从不同的线程调用,但如果这样做,为什么不使用异步处理程序?
>除了自己的错误之外,没有办法取消该请求

而不是这样,只需使用异步请求:

NSURLConnection.sendAsynchronousRequest(request,queue: queue,completionHandler:{ (response: NSURLResponse!,data: NSData!,error: NSError!) -> VoID in    // Handle incoming data like you would in synchronous request    var reply = Nsstring(data: data,enCoding: NSUTF8StringEnCoding)    f(reply)})

iOS9弃用

由于在iOS9中,这种方法已被弃用,建议您使用NSURLSession:

let session = NSURLSession.sharedSession()session.dataTaskWithRequest(request) { (data,response,error) -> VoID in    // Handle incoming data like you would in synchronous request    var reply = Nsstring(data: data,enCoding: NSUTF8StringEnCoding)    f(reply)}
总结

以上是内存溢出为你收集整理的ios – Swift 2上的同步URL请求全部内容,希望文章能够帮你解决ios – Swift 2上的同步URL请求所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1115125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存