如何解决cellForRowAt->线程1:致命错误:索引超出范围
在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!)
}
}
解决方法
此答案将向您展示如何查找导致错误的原因-由您自行解决。
首先,您应该(几乎)永远不要用!
强行打开可选的选项,这只是在请求崩溃。
此外,您需要拆分代码行以查找实际错误。用以下内容替换您发布的代码块:
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
错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。