#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!