У меня есть приложение для чата. Я отображаю сообщения с помощью NSFetchedResultsController. Для эффективного извлечения огромного количества данных я использую этот FRC
let fetchRequest: NSFetchRequest<Messages> = Messages.fetchRequest()
let appDelegate: AppDelegate? = UIApplication.shared.delegate as? AppDelegate
let manageObjectContxt = appDelegate?.persistentContainer.viewContext
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "time", ascending: false)]
fetchRequest.fetchBatchSize = 30
let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: manageObjectContxt!, sectionNameKeyPath: nil, cacheName: nil)
Но проблема в том, что collectionView показывается снизу как приложения для чата. Когда страница сообщений загружается и основные данные выполняются, я иду в конец списка сообщений следующим образом:
let lastCellIndex = IndexPath.init(row: self.collectionView.numberOfItems(inSection: 0) - 1, section: 0)
self.collectionView.scrollToItem(at: lastCellIndex, at: .bottom, animated: false)
Я чувствую, что это побеждает всю цель fetchRequest.fetchBatchSize = 30
, потому что первые несколько сообщений загружаются, а затем прокручиваются вниз. Таким образом, все сообщения загружаются мгновенно, и это вызывает некоторую проблему с производительностью при огромном количестве сообщений.
Как отобразить collectionView снизу вверх, не извлекая сразу все основные данные?
К вашему сведению, я использую подкласс FlowLayout для collectionViewLayout. Список сообщений постоянно обновляется из-за отправки и получения сообщений.