gpt4 book ai didi

swift - 快速发送http请求

转载 作者:行者123 更新时间:2023-11-30 10:12:49 28 4
gpt4 key购买 nike

我试图解决http请求的问题,因为我几乎无法理解所有关于同步和异步方法的知识。我只是想知道如何让编译器等待开始的http请求完成然后才继续执行?

例如,我需要获取一些页面,解析数据并将其发布到另一个页面。但是,当首先执行发布从第一个请求解析的数据的请求,然后才执行解析数据的请求时 - 我有一个很大的屁股。

最佳答案

您应该避免将同步网络请求视为瘟疫。它有两个主要问题:

  • 如果不是从不同的线程调用,该请求会阻塞您的 UI,这对于高质量的应用程序来说是大忌(嗯,对于任何应用程序来说都是如此)
  • 除非该请求本身出错,否则无法取消该请求

我建议您使用一些编写良好的网络请求库,例如 AlamofireAFNetworking 。对于 Swift 和您想要完成的任务,我推荐 Alamofire,因为它更容易使用,并且涵盖了您需要的所有基本内容。

您可以执行如下基本请求:

// Perform GET request
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["key": "value"])
.response { request, response, data, error in

// Do something with response or error
println(response)
println(error)
}

现在,对于您的问题,您始终可以阻止 UI 直到网络操作完成,无论是推迟 PerformSegue,还是简单地禁止“下一步”按钮直到获得响应,或者简单地通过使用进度条/微调器覆盖 View ,例如使用 SVProgressHUD library 。结合起来,你可以这样做:

// Show progress HUD. This disables user interaction by default
SVProgressHUD.show()

// Perform GET request
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["key": "value"])
.response { request, response, data, error in

// Do something with response or error
println(response)
println(error)

// Hide progress to enable user interaction again
SVProgressHUD.dismiss()

// Or optionally perform transition to different controller here
self.performSegueWithIdentifier(identifier, sender: nil)
}

希望对你有帮助!

关于swift - 快速发送http请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31987379/

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