Куда мне поместить вычисления для многоразовых ячеек?

#swift #uicollectionview #uicollectionreusableview

#swift #uicollectionview #uicollectionreusableview

Вопрос:

В моих контроллерах просмотра многие мои методы cellForItemAt содержат вычисления в них. В следующем примере я получаю amount, image и balanceAtDate и передаю их в свое представление:

 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: SummaryCell.cellId, for: indexPath) as! SummaryCell
        
        let amount = filteredTransactions[indexPath.row].transactionAmount

        let image = UIImage(named: filteredTransactions[indexPath.item].transactionCategory!.categoryName)

        let balanceAtDate: Double = realm.objects(Transaction.self).filter("transactionDate <= %@", transactionResults[indexPath.item].transactionDate).sum(ofProperty: "transactionAmount")

        cell.configure(with: image, and: amount, and: balanceAtDate)
        
        return cell
    }
  

Мне стало известно, что я не должен выполнять какие-либо вычисления или вычисления в cellForItemAt, потому что он вызывается для каждой ячейки, и это замедлит работу приложения.

Я создаю 3 константы: amount, image и balanceAtDate . Мне нужно поместить все три куда-нибудь еще или просто balanceAtDate?

Куда же тогда мне поместить вычисление, для которого требуется, чтобы indexPath.item получил что-то вроде balanceAtDate ?

Комментарии:

1. Вы должны выполнить все вычисления до перезагрузки представления таблицы / коллекции. Выполните эти вычисления в фоновой очереди, затем обновите представление в основной очереди (потоке)

2. Думаю, мне нужно больше узнать о потоковой обработке. Спасибо @Jay!