Ios Swift:tableview中的线程1 exc_bad_指令(代码=exc_i386_invop子代码=0x0)
我正在使用Tableview控制器制作两个原型单元,由于 线程1 exc_bad_指令(代码=exc_i386_invop子代码=0x0) 指向>>>返回单元格!在第一个牢房里 致命错误:在展开可选值时意外发现nilIos Swift:tableview中的线程1 exc_bad_指令(代码=exc_i386_invop子代码=0x0),ios,swift,uitableview,Ios,Swift,Uitableview,我正在使用Tableview控制器制作两个原型单元,由于 线程1 exc_bad_指令(代码=exc_i386_invop子代码=0x0) 指向>>>返回单元格!在第一个牢房里 致命错误:在展开可选值时意外发现nil 看起来是因为电话 let cell=tableView.dequeueReusableCellWithIdentifier(“两个”,forIndexPath:indexPath)as!两个 正在将单元格强制向下转换为类型two,返回的对象不是类型two。使用这里主要是说: “将单
看起来是因为电话
let cell=tableView.dequeueReusableCellWithIdentifier(“两个”,forIndexPath:indexPath)as!两个
正在将单元格强制向下转换为类型two
,返回的对象不是类型two
。使用代码>这里主要是说:
“将单元格出列(返回类型AnyObject),然后向下转换为两种类型two
。我知道如果类型不匹配,向下转换可能会失败,但在这种情况下,我肯定会失败。无需处理错误”
由于强制转换可能失败,因此强制转换将返回可选的。在这种情况下,返回的单元格不能向下转换,因为类型不匹配。检查注册标识符的代码“two”
,并检查是否注册了正确类型的类(名为two
的UITableViewCell子类)如果我可以改进代码:
let cellID = (indexPath.section == 0) ? "one" : "two"
if let cell = tableView.dequeueReusableCellWithIdentifier(cellID, forIndexPath: indexPath)
as? UITableViewCell
cell.textLabel!.text = (cellID == "one") ? "book" : "not a book"
return cell
}
else {
assertionFailure("Unable to dequeue a cell of ID \(cellID)")
return nil
}
然后您将获得合理的错误行为。我敢打赌,即使您将类命名为one
和two
,您也忽略了在每个单元原型的属性检查器的故事板中设置它们的“标识符”
你的回答非常错误。您不应该创建大量的表格单元格。这是对桌子的滥用。您应该只使用重用队列中的那些
使用我的代码版本,并在if let cell
之后设置断点。在调试器中分析对象并查看其实际类型
如果您点击了断言失败
,您仍然没有在情节提要中正确设置标识符。向我们展示一个屏幕截图来说服我们。我认为您应该编辑代码:
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 2
}
试着在桌子周围放一个if-let。dequence…,这样你们就可以确保你们实际上有一个原型单元。然后回顾故事板,确保您已经设置了原型单元的标识符。您需要单击原型单元并设置其标识符,或者如果这不是问题所在,那么问题可能是您没有设置单元的类别,因此您需要转到两个单元的标识检查器并设置其自定义是的,我再次检查了两个自定义类。我更改了它给我的名称,无法强制转换类型为“UITableViewCell”(0x10ac14450)的值。我再次检查了标识符“two”及其UITableViewCell子类。很明显,如果two
不是有效类型,代码不太可能编译。出于好奇,我从中得到了答案,你到底错过了什么?我无法使用你的调试代码我刚开始学习swift我不知道把它放在哪里!如果indexath.row==3{let cell:UITableViewCell=UITableViewCell(style:UITableViewCellStyle.Default,reuseIdentifier:“cell”)作为!TableViewCell.img.image=UIImage(名为:“CJfSS2TW8AQ0CUu.jpg”)返回单元格,则无法识别tableview单元格>>中的imageview我不是说我的代码,我的意思是,既然你从另一个问题中得到了答案,我想你已经准备好了大部分片段,而答案帮助你找到了最后一个片段,那么它是什么呢?(顺便说一句,我的代码只是您的cellforrowatinexpath
delegate方法的完全替代品)
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 2
}