Когда я пытаюсь удалить элемент из базы данных Realm, я не могу соответствующим образом обновить UICollection View.Обновление UICollectionView после удаления объекта Realm
Давайте предположим, что царством контейнер children
типа List<Child>
:
var children = realm.objects(Parent).first!.children
Когда я хочу, чтобы удалить этот ребенок из базы данных:
try! realm.write {
realm.delete(children[indexPath.row])
}
обновление CollectionView по collectionView.deleteItemsAtIndexPaths([indexPath])
дает следующее сообщение об ошибке:
Got error: *** Terminating app due to uncaught exception 'RLMException', reason: 'Object has been deleted or invalidated.'
T он только так, как я получаю обновленный collectionView, с помощью collectionView.reloadData()
, но это не то, что я хочу, поскольку анимация удаления ячейки отсутствует.
Однако, когда я только удалить ребенка из этого контейнера в indexPath.row
(без его удаления из базы данных) по:
try! realm.write {
children.removeAtIndex(indexPath.row)
}
обновление CollectionView с collectionView.deleteItemsAtIndexPaths([indexPath])
работает без проблем.
Что было бы лучшим способом обновить UICollectionView после удаления элемента из базы данных?
Проблема: вы сначала удаляете ее из children.removeAtIndex (indexPath.row). Тогда как возможно, что объект доступен в этом indexPath.row? –
Это правда. Но на самом деле я не хочу использовать 'removeAtIndex' вообще, так как я хочу удалить его из базы данных. Я упомянул об этом, потому что это был единственный способ получить обновление collectionView. – Gerard
Для перезагрузки коллекции вам нужно удалить объект из списка детей. Таким образом, просмотр коллекции получит новый список. –