Я создаю приложение, которое использует collectionView для отображения рецептов. Когда пользователь прокручивает до конца, я вызываю свой сервер и выбираю больше рецептов. В настоящее время я вызываю reloadData () после того, как сервер отвечает новыми рецептами. Это работает, но перезагружает все, когда все, что мне нужно сделать, это загрузить новые рецепты. Я читал похожие посты, указывающие, что я могу использовать insertItems - но для меня это вылетает с: libc ++ abi.dylib: завершается с необработанным исключением типа NSException
Вот мой код:
func updateRecipes(recipesToAdd: Array<Recipe>) {
let minNewRecipesIndex = (self.recipes.count + 1)
recipes += recipesToAdd
DispatchQueue.main.async {
if recipesToAdd.count == self.recipes.count {
self.collectionView?.reloadData()
} else {
let numberOfItems: [Int] = Array(minNewRecipesIndex...self.recipes.count)
self.collectionView?.insertItems(at: numberOfItems.map { IndexPath(item: $0, section: 0) })
// this crashes, but self.collectionView.reloadData() works
}
}
}
Даже простой жесткий код - self.collectionView? .InsertItems (at: IndexPath (item: 1, section: 0)) - вылетает.