我的索引超出了致命错误范围。我试图在一个Table View控制器的一个单元中实现2个集合视图。两者都有不同的数据源。从数据源将图像数据加载到单元中时,由于此错误,第二个收集视图单元未加载图像数据。
即使我转储df %>%
group_by(ID) %>%
mutate(SUM = rollsumr(VAL, k=3, fill = NA),
SUM = ifelse(row_number() < 3, cumsum(VAL), SUM))
的内容时,它也有5个(键,值)对形式的对象
错误发生在下面的行
BannerList
我看过其他类似的问题,但是没有一个有用的
let bannerList = BannerList[indexPath.row]
这是collectionView的“ numberOfItems”的实现
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionCell", for: indexPath) as! Top_PageCollectionViewCell
if (collectionView === upperBannerCollectionView) {
if OtokuList.count > 0 {
let otokulist2 = OtokuList[indexPath.row]
cell.load_image(otokulist2.banner_image)
}
} else {
if BannerList.count > 0 {
let bannerList = BannerList[indexPath.row]
cell.load_image(bannerList.banner_image)
}
}
return cell
}
添加了带有图像的print(BannerList)调试
debug of print(BannerList) debugger screenshot
在尝试从数据源BannerList加载数据时,不应出现此类索引超出范围错误。
答案 0 :(得分:0)
首先,我认为您的主要问题是“ numberOfItemsInSection”中的数组。
让我们假设您在“ numberOfItemsInSection ”中使用 OtokuList.count 那时OtokuList有3个项目,而BannerList只有1个项目。
if BannerList.count > 0 { //this validation will work even if indexPath.row is 2
let bannerList = BannerList[indexPath.row] //this line will crash
cell.load_image(bannerList.banner_image)
}
我对此的解决方案是:
if BannerList.count > indexPath.row {
let bannerList = BannerList[indexPath.row]
cell.load_image(bannerList.banner_image)
}