swift - 如果另一个动作在 10 秒内没有完成,如何执行一个动作?
问题描述
我想在应用程序启动时执行以下代码:
let database = "https://example.com" // A website.
let databaseURL = URL(string: "\(database)")!
var databaseRequest = URLRequest(url: databaseURL)
databaseRequest.httpMethod = "GET"
NSURLConnection.sendAsynchronousRequest(databaseRequest, queue: OperationQueue.main) {(response, data, error) in
guard let data = data else { return }
let databaseContents = data
let databaseFile = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("local.txt")
do {
try databaseContents.write(to: databaseFile)
} catch {
print(error.localizedDescription)
}
}
我想给这段代码 10 秒的运行时间。如果花费的时间超过 10 秒,请中止它并执行其他操作,如下所示:
print("ERROR: Could not retrieve list.")
let warningToUser = UIAlertController(title: "Error", message: "We couldn't retrieve your preferences, so they have been reset to default values. We will try again next time you launch this app.", preferredStyle: .alert)
warningToUser.addAction(UIAlertAction(title: "OK", style: .default))
self.present(warningToUser, animated: true)
我什至不知道该尝试什么。非常感谢任何帮助!谢谢!
解决方案
您需要指定 URLrequest 的时间间隔。只需将此行放入您的代码中databaseRequest.timeoutInterval = 10
推荐阅读
- r - 在 rgl 中,是否可以在不再次传递坐标的情况下更改顶点的颜色?
- reactjs - 如何在实时服务器上的 linux os 中使用 react js 创建 webpack 项目的 nohup.out 文件
- ios - UISceneDelegate scene(_:openURLContexts:) 方法是在特定场景上调用过还是只是“第一个”?
- wikidata-api - 如何使用 WbQuantity() 函数添加带单位的数值(例如 1500 kW),使用教程失败
- json - 解析Json时如何解决Circe中的递归解码?
- python - 使用 Marshmallow 加载 PATCH 数据而不验证缺失的字段
- java - 重定向 /logout 请求到 /api/logout webflux spring boot
- javascript - 如何在 .js 文件中加载 Google Places API,而不是在