Быстрый сервисный вызов, обработка ответа - PullRequest
0 голосов
/ 23 июня 2019

Я пишу приложение для iOS, используя swift 4.2.Я делаю сервисный звонок, чтобы выйти из системы.Мне нужно знать, где использовать основной поток (DispatchQueue.main.async).Вот мой код:

    private func handleLogoutCellTap() {
        logoutUseCase?.logout() { [weak self] (result) in
            guard let self = self else { return }
            switch result {
            case let (.success(didLogout)):
                didLogout ? self.handleSuccessfullLogout() : self.handleLogoutError(with: nil)
            case let (.failure(error)):
                self.handleLogoutError(with: error)
            }
        }
    }

logoutUseCase? .Logout () вызывает сервис и возвращает завершение @escaping.Должен ли я использовать DispatchQueue.main.async для всей этой функции handleLogoutCellTap () или только для сегмента обработки?

1 Ответ

2 голосов
/ 23 июня 2019

Переместите элемент управления на main thread, где бы вы ни обновляли UI после получения ответа logout.

Если методы handleSuccessfullLogout() и handleLogoutError(with:) выполняют какие-либо UI операция, вы можете встроить все switch statement в DispatchQueue.main.async, т. Е.

private func handleLogoutCellTap() {
    logoutUseCase?.logout() { [weak self] (result) in
        guard let self = self else { return }
        DispatchQueue.main.async { //here.....
            switch result {
                //rest of the code....
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...