在NSIndexPath上意外发现nil运行时错误

时间:2015-02-01 00:31:27

标签: ios objective-c swift

我试图在点击按钮时获取对按钮所包含的单元格的引用,但是它不应该抛出错误。

fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb) 

我正在检查它的可选值是否为nil并且它不是,然后它会抛出运行时错误..

func buttonReleased(button: UIButton){
  let pointInTable: CGPoint = button.convertPoint(button.bounds.origin, toView: self.tableView)
  var path = myTableView.indexPathForRowAtPoint(pointInTable)

  if let cell = self.myTableView.cellForRowAtIndexPath(path!) as? MainListTableViewCell {
     println("test")
  } else {
     println("it didn't work, let's think about why")
  }
}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

 var cell = self.myTableView.cellForRowAtIndexPath(path!) 
     as MainListTableViewCell

想想你知道什么,不知道什么。你知道path不是零。但那就是你所知道的。您的代码做出了许多其他假设。 cellForRowAtIndexPath返回一个Optional。您假设该特定cellForRowAtIndexPath的{​​{1}}不是nil。并且您进一步假设它返回的单元格是MainListTableViewCell。而不是假设,编写代码的方式是在解开Optional之前检查每个事情。

所以,你可以用这种方式编写代码:

path