首页 > 解决方案 > 如果另一个动作在 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)

我什至不知道该尝试什么。非常感谢任何帮助!谢谢!

标签: swift

解决方案


您需要指定 URLrequest 的时间间隔。只需将此行放入您的代码中databaseRequest.timeoutInterval = 10


推荐阅读