Как бороться с реактивными обновлениями программирования и CollectionView - PullRequest
0 голосов
/ 29 октября 2018

У меня есть веб-сокет, который может добавлять или удалять данные в MutableProperty<[Stuff]>

Но когда я перезагружаю collectionView с collectionView.reloadData(). Веб-сокеты добавляют или удаляют данные в MutableProperty<[Stuff]>, поэтому происходит сбой

для нескольких причин здесь есть некоторые ошибки:

  • Индекс вне диапазона, когда методы collectionView используют мой список
  • Недопустимое количество элементов вызывает сбой, например: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of sections. The number of sections contained in the collection view after the update (58) must be equal to the number of sections contained in the collection view before the update (59), plus or minus the number of sections inserted or deleted (0 inserted, 0 deleted).'

У кого-нибудь есть хороший совет или лучшая практика для этого? Я вижу, что MutableProperty является потокобезопасным

Я знаю, почему он падает. Это происходит сбой, потому что веб-сокеты добавляют или удаляют значения из массива во время reloadData из collectionView, но я не знаю, как это решить. Я знаю, что мы можем использовать семафор, но я ищу что-то элегантное

1 Ответ

0 голосов
/ 29 октября 2018

Вы должны показать нам немного больше своего кода, чтобы мы лучше понимали. Однако если вы возвращаете фиксированное значение в делегатах: numberOfSections и numberOfRowsInSection, вам необходимо обновить их перед вызовом collectionView.reloadData(), чтобы эти два делегата возвращали точное количество разделов и элементов в каждом разделе.

...