У меня есть коллекция чата. где пользователь может отправлять новое сообщение, удалять сообщения и т. д. CollectionView поддерживается с помощью fetchedResultController.
Существует несколько типов ячеек, таких как текст, изображение, звук и т. Д. Я создал проигрыватель, который обрабатывает звук для одной ячейки. Ячейка является делегатом игрока, поэтому я могу обновить время воспроизведения, остановить игрока и т. Д. Из объекта Player. Я отслеживаю текущую воспроизводящую аудио ячейку, используя indexPath.
Но проблема в том, что если пользователь удаляет сообщение, которое получено или отправлено до аудиосообщения, indexPath аудиосообщения изменяется.
func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>,
didChange anObject: Any,
at indexPath: IndexPath?,
for type: NSFetchedResultsChangeType,
newIndexPath: IndexPath?) {
}
В этом обратном вызове я получаю удаление только для удаленной ячейки. Но я не получаю никакого обратного вызова для обновленного indexPath других ячеек. Как я могу отследить indexPath аудио ячейки или ячейку, если предыдущая ячейка удалена?