在展开可选值线程时意外发现nil:1个错误指令

时间:2015-03-22 02:37:21

标签: ios uitableview swift

是否有人知道在text方法的自定义UILabel中为UITableViewCell设置cellForRowAtIndexPath属性时发生此错误的原因?

  

主题1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)

enter image description here

4 个答案:

答案 0 :(得分:1)

在我看来,您正试图访问“电话号码”上的UILabel' UITableViewCell直接&设置文本。在这种情况下,UILabel通常是Optionals - 所以你需要首先打开可选项(以确保其值实际存在 - 即非零)。

尝试一下,让我知道它是否有帮助!

if let b = cell.bookPoster {
  b.text = "Hello World"
}

如果这样可以解决错误,我建议您阅读Optionals

答案 1 :(得分:0)

您必须在NIB中声明单元格并在代码中加载NIB并从中加载单元格,或者在不使用NIB时,第一次出列单元格时,必须创建所有子视图并且通常将它们添加到单元格的内容视图中。那么你可以访问单元格的内容,但是每个被dequed的单元格必须首先从某个地方进行初始化测试。

简单地将出列的单元格转换为子类类型是不够的。

答案 2 :(得分:0)

你应该得到这样的细胞:

var cell =  tableView.dequeueReusableCellWithIdentifier("reuseCell", forIndexPath: indexPath) as bookCell

您需要提供indexPath参数。

答案 3 :(得分:0)

我的猜测是你没有为tableView注册单元格的nib。 在viewDidLoad方法中,您应该执行以下操作:

myTableView.register(UINib.init(nibName: "myCellNibName"), bundle: nil), forCellReuseIdentifier: "reuseCell") 

这样你的笔尖就会被加载并准备好使用。