UI中的数据更新延迟8秒

时间:2019-05-10 15:27:41

标签: swift

我使用“ globalQueue.async”从服务器接收数据,然后使用结果更新UI。我几乎是在发出请求的同一秒从服务器接收到所需的数据的,我知道这一点,因为我是通过代码在XCode中打印数据的。但是问题在于,UI中的UILabel至少在8秒后就会更新。

我了解我正在尝试在主线程上更新侧线程数据,但是我采用了这种方法,因为UI在从服务器获取数据时冻结了(在尝试从服务器获取数据的过程中以及当数据获取数据时,任何操作均无效接收到它会显示数据并启用UI),当我使用“ DispatchQueue.main.async”时会发生这种情况,所以我决定使用“ globalQueue.async”,因为它不会冻结UI,但我面临“ globalQueue.async”问题因为它很晚才更新UI上的数据,有时即使在数据以XCode打印时也无法更新UI上的数据。

我迷路了,我尝试了好几天,头痛不已,我想不出一种方法来实现我的目标,即从服务器获取数据并更新UI,而又不会冻结UI。

请帮助。

这是ViewController.swift代码:

try! myobj.createData(request: request, with: { stringReturn in
        print("" + stringReturn.result)
        self.displayTextArea.text = stringReturn.result// displayTextArea is UILabel field                
})

1 个答案:

答案 0 :(得分:1)

每个UI更新都必须在主线程中完成 试试这个...

try! myobj.createData(request: request, with: { stringReturn in
    print("" + stringReturn.result)
    DispatchQueue.main.async {
        self.displayTextArea.text = stringReturn.result// displayTextArea is UILabel field                
            }
     })