Swift - asyn c вызов в tableView cellForRowAt - PullRequest
0 голосов
/ 30 января 2020

Я попытался войти и выйти из DispatchGroup, но не смог заставить его работать.

Я не загружаю изображения, поэтому не думаю, что мне нужно URLSession.shared.dataTask с completionHandler

В функции cellForRowAt я вызвал другую функцию для асинхронной загрузки c и вернул мне значения, необходимые для заполнения ячейки.

//in cellForRowAt:
let (value1, value2) = getValues(forRow: indexPath.row)



func getValues(forRow: Int) -> (Int, Int) {

    DispatchQueue.main.async {
        var value1 = 0
        var value2 = 0

        //calculations to figure out the values

        return (value1, value2)
    }
}

DispatchQueue.main.async строка выдаёт мне ошибку "Cannot convert return expression of type '()' to return type '(Int, Int)'"

Есть ли лучший способ вернуть значение в определенную ячейку таблицы после асинхронного c вычисления?

Большое спасибо за ваше помощь!

1 Ответ

1 голос
/ 30 января 2020

DispatchQueue.main.async является пустым блоком. Вы не можете вернуть значение в конце.

Вам нужно вызвать блок внутри него, чтобы получить ваши значения

func getValues(forRow: Int, block:(Int,Int)->Void) {

    DispatchQueue.main.async {
        var value1 = 0
        var value2 = 0

        //calculations to figure out the values

        block(value1, value2)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...