cellForRowAt->线程1:致命错误:索引超出范围

时间:2020-08-28 10:24:21

标签: ios swift uitableview

在tableviewDelegate中-cellforRowAt方法。 我仍然尝试,但是没有运行。

我使用自定义表格视图单元格并在表格视图中显示。

此错误的原因是什么?

for i in 0..<4 {
    if modelInViewModel[indexPath.row].body_images[i] == nil {
        cell.uploadImageView![i].isHidden = true
    } else {
        let imageView = modelInViewModel[indexPath.row].body_images[i]
        cell.uploadImageView![i].image = UIImage(named: imageView!)             
    }
}

1 个答案:

答案 0 :(得分:1)

此答案将向您展示如何查找导致错误的原因-由您自行解决。


首先,您应该(几乎)永远不要用!强行打开可选的选项,这只是在请求崩溃。

此外,您需要拆分代码行以查找实际错误。用以下内容替换您发布的代码块:

    for i in 0..<4 {
        if i > modelInViewModel.count - 1 {
            fatalError("i = \(i) but modelInViewModel has only \(modelInViewModel.count) elements!")
        }
        let vm = modelInViewModel[indexPath.row]
        if i > vm.body_images.count - 1 {
            fatalError("i = \(i) but modelInViewModel[indexPath.row].body_images has only \(vm.body_images.count) elements!")
        }
        let imgViews = cell.uploadImageView!
        if i > imgViews.count - 1 {
            fatalError("i = \(i) but cell.uploadImageView has only \(imgViews.count) elements!")
        }

        // comment out your current code for now....
        //if modelInViewModel[indexPath.row].body_images[i] == nil {
        //  cell.uploadImageView![i].isHidden = true
        //} else {
        //  let imageView = modelInViewModel[indexPath.row].body_images[i]
        //  cell.uploadImageView![i].image = UIImage(named: imageView!)
        //}
    }

您应该(至少)在其中的fatalError行中发生崩溃,这将告诉您在哪里出现Index out of range错误。