我有一个方法在UICollectionViewCell中调用下面的代码。该单元具有对UICollectionView和它所基于的数组的引用。以下代码失败并显示错误:
2014-11-20 13:41:08.976 MyApp[954:304515] *** Assertion failure in -[UICollectionView _endItemAnimations], /SourceCache/UIKit/UIKit-3318.16.14/UICollectionView.m:3917
2014-11-20 13:41:08.978 MyApp[954:304515] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of items in section 0. The number of items contained in an existing section after the update (1) must be equal to the number of items contained in that section before the update (1), plus or minus the number of items inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of items moved into or out of that section (0 moved in, 0 moved out).'
*** First throw call stack:
(0x22f09d67 0x30768c77 0x22f09c3d 0x23bdcaa9 0x2656863d 0xe8e50 0xe8fa8 0x2680bcc1 0x23c10dc9 0x22ed0517 0x22ed0099 0x22ece303 0x22e1b981 0x22e1b793 0x2a1f4051 0x2640d981 0x1138f4 0x113930 0x30d04aaf)
libc++abi.dylib: terminating with uncaught exception of type NSException
守则
//Resolves cell deletion
func deleteMe()
var path = collectionView.indexPathForCell(self)!
collectionArray.removeAtIndex(path.row)
collectionView.deleteItemsAtIndexPaths([path])
}
如何删除此单元格?
答案 0 :(得分:6)
在这种情况下,当分配collectionArray或collectionView时(我没有测试看哪个,但我的赌注是在collectionArray上),它不是一个inout引用,而是一个副本。对于性能问题,Array有一些奇怪的功能。如果我传入了对整个父视图(serviceView)的引用并使用
进行了访问serviceView.collectionArray.removeAtIndex(path.row)
serviceView.collectionView.deleteItemsAtIndexPaths([path])
它工作正常。数据源和显示的单元格不匹配,因为数组未被编辑,副本是。