Swift rest客户端正在建立慢速连接

时间:2017-06-16 07:16:32

标签: ios swift swift3

我在实施与长延迟相关的Android客户端时出现性能问题。我的REST client应用或任何API添加到浏览器的问题都不存在,因此与后端问题无关。

这是我执行func getRecordsMethod(completion: @escaping ((_ result: Data) -> Void)){ let defaults = UserDefaults.standard let username = defaults.object(forKey: "username") as! String let password = defaults.object(forKey: "password") as! String let loginString = String(format: "%@:%@", username, password).description let loginData = loginString.data(using: String.Encoding.utf8) let base64LoginString = loginData?.base64EncodedString() let url = URL (string: apiURL + getPersonalBests ) var request = URLRequest(url: url!) request.httpMethod = "GET" request.setValue("Basic " + base64LoginString!, forHTTPHeaderField: "Authorization") let task = URLSession.shared.dataTask(with: request) { data, response, error in if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode == 200 { completion(data!) } } task.resume() } 电话的功能:

ViewController

以及我如何在我的override func viewDidLoad() { super.viewDidLoad() populateRecords() } func populateRecords(){ self.records.removeAll() apiRestManager.getRecordsMethod() { (result: Data) in let json = JSON(data: result) for (_, subJson) in json { // processing response- adding to personalBestTable } DispatchQueue.main.async { self.personalBestTable.reloadData() } } } 中调用它:

populateRecords

最大的问题是,在启动函数 len=temp_i.len() for(i=0;i<len;i++)begin bit [7:0] temp_ascii; temp_ascii=temp_i.getc(i); arr = {arr,temp_ascii}; 之后,在我的后端看到一个调用后大约2-3秒(在该处理和表重新加载后立即进行)

任何人都可以给我一个如何优化请求速度的提示吗?

1 个答案:

答案 0 :(得分:0)

UserDefault获取有关主要威胁的数据可能会导致延迟。

使用以下代码更改您的viewDidLoad方法

        override func viewDidLoad() {
            super.viewDidLoad()

            let concurrentQueue = DispatchQueue(label: "apiQueue", attributes: .concurrent)

             concurrentQueue.async {
                    populateRecords()
             }
        }