Swift UIViewController UITableView编辑模式导致tableView部分返回nil

时间:2014-10-03 22:59:28

标签: objective-c uitableview swift ios8

我有一个UITableView工作得很好。当我使用viewDidLoad()方法中的以下代码启用编辑模式时:

self.tableView.editing = true

我收到以下错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

在这一行:

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
      return fetchedResultsController.sections!.count // error here
 }

我检查过,fetchedResultsController不是nil,但是section是。

如果禁用编辑模式,则不是这种情况。

可能是什么原因?

2 个答案:

答案 0 :(得分:1)

要停止此特定错误,您只需在numberOfSectionsInTableViewfetchedResultsController.sections时在nil中返回默认值:

请注意使用sections?代替sections!Nil Coalescing Operator ??

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return fetchedResultsController.sections?.count ?? 0 // 0 is the default
}

这并不能解释当fetchedResultsController处于nil模式时,sections返回tableView editing数组的原因。

我怀疑sections可能是nil,因为您在editing中设置viewDidLoad并且触发了表格视图重新加载。此时,fetchedResultsController可能没有足够的时间来获取任何结果,因此它没有任何sections返回。当0sections时,简单地返回默认值nil就足够了,因为fetchedResultsController将有时间完成加载并使用适当的方式重新加载表视图数据

答案 1 :(得分:0)

我认为语法是:

self.tableView.setEditing(true, animated: true)

我没有在任何代码中对此进行建模。所以,如果没有帮助,请告诉我,我会再试一次。