我刚刚将我的Xcode从8更新到9,现在我注意到当我想测试我的项目时,我遇到了崩溃。 (之前,使用Xcode 8,它有效)
问题是我有一个UICollectionView
个单元格,这些内容是从互联网上下载的,所以它们的数量可以改变。 (现在是5)
当我想滚动时,它会立即崩溃并出现以下异常:
2017-09-30 13:31:26.881320+0200 liveExperience[1556:568711] *** Assertion failure in -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3694.4.18/UICollectionView.m:1972
2017-09-30 13:31:26.882557+0200 liveExperience[1556:568711] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'the cell returned from -collectionView:cellForItemAtIndexPath: does not have a reuseIdentifier - cells must be retrieved by calling -dequeueReusableCellWithReuseIdentifier:forIndexPath:'
*** First throw call stack:
(0x1813ffd38 0x180914528 0x1813ffc0c 0x181d8ec24 0x18b2803c8 0x18a86f344 0x18a86a02c 0x18a80d000 0x1853dd0b4 0x1853e1194 0x18534ff24 0x185376340 0x185377180 0x1813a78b8 0x1813a5270 0x1813a582c 0x1812c62d8 0x183157f84 0x18a873880 0x104a7a800 0x180dea56c)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
我检查过但是细胞标识符很好,唯一的出口是好的,现在我不知道发生了什么。
我在此附上我的相关代码段:
func numberOfSections(在collectionView:UICollectionView中) - > Int { 返回1 }
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return games.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "miniGameCell", for:indexPath) as! SB
guard let imageData = games[indexPath.row].logo as Data? else {
return UICollectionViewCell()
}
cell.gameImageView.image = UIImage(data: imageData)
return cell
}
我将代码从Swift 3转换为Swift 4。
答案 0 :(得分:10)
问题出在你的代码的这一部分:
plt.figure()
无法返回 guard let imageData = games[indexPath.row].logo as Data? else {
return UICollectionViewCell()
}
没有标识符。您应该从数据源中删除不具有UICollectionViewCell
的有效图像数据的元素,或者只显示没有图像的游戏的占位符图像。