Обновление данных в пользовательском интерфейсе задерживается на 8 секунд - PullRequest
0 голосов
/ 10 мая 2019

Я получаю данные с сервера, используя «globalQueue.async», а затем использую результат для обновления пользовательского интерфейса. Я получаю нужные данные с сервера почти в ту же секунду, когда я делаю запрос, и я знаю это, когда печатаю данные в XCode с помощью кода. Но проблема в том, что UILabel в пользовательском интерфейсе обновляется по крайней мере через 8 секунд.

Я понимаю, что я пытаюсь обновить данные стороннего потока в основном потоке, но я выбрал этот подход, потому что пользовательский интерфейс зависал при получении данных с сервера (ничего не работает в то время, когда он пытается получить данные с сервера, и когда данные он показывает данные и включает пользовательский интерфейс) это происходит, когда я использую «DispatchQueue.main.async», поэтому я решил использовать «globalQueue.async», так как он не замораживает пользовательский интерфейс, но я столкнулся с проблемой с «globalQueue.async» поскольку он обновляет данные в пользовательском интерфейсе очень поздно и иногда не может обновить данные в пользовательском интерфейсе, даже когда данные были напечатаны в XCode.

Я потерян, я несколько дней пытался с сильной головной болью и не могу найти способ достичь своей цели - получать данные с сервера и обновлять пользовательский интерфейс, не останавливая пользовательский интерфейс в процессе даже на секунду.

Пожалуйста, помогите.

Вот код ViewController.swift:

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

1 Ответ

1 голос
/ 10 мая 2019

Каждое обновление пользовательского интерфейса должно выполняться в основном потоке. попробуй это ...

try! myobj.createData(request: request, with: { stringReturn in
    print("" + stringReturn.result)
    DispatchQueue.main.async {
        self.displayTextArea.text = stringReturn.result// displayTextArea is UILabel field                
            }
     })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...