Как эффективно отображать collectionView снизу вверх, не извлекая сразу все основные данные? - PullRequest
0 голосов
/ 25 августа 2018

У меня есть приложение для чата. Я отображаю сообщения с помощью 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. Список сообщений постоянно обновляется из-за отправки и получения сообщений.

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