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

标签 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,但是sections 是。

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

可能是什么原因?

最佳答案

要停止此特定错误,您只需在 fetchedResultsController.sectionsnil 时在 numberOfSectionsInTableView 中返回默认值即可:

请注意使用 sections? 而不是 sections!,以及 Nil Coalescing Operator ??:

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

这并不能解释为什么当您的 tableView 位于时,您的 fetchedResultsController 返回 nil sections 数组编辑模式。

我怀疑 sections 可能是 nil 因为您在 viewDidLoad 中设置 editing 并且这会触发 TableView 重新加载。此时,fetchedResultsController 可能根本没有足够的时间来获取任何结果,因此它没有任何部分可返回。当 sectionsnil 时,简单地返回默认值 0 可能就足够了,因为那时 fetchedResultsController 将有时间完成加载并使用正确的数据重新加载表格 View 。

关于objective-c - Swift UIViewController UITableView编辑模式导致tableView部分返回nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26187882/

相关文章:

c++ - Objective-C 集成 C 库并传递字符串值 - ARC 错误

c++ - 使用 C++ 或 Objective C 应用程序与 RTMP 服务器通信

ios - 找不到我的方法定义,但我不确定为什么

ios - 使用 Storyboard创建多个可以使用按钮在之间切换的 TableView

swift - navigationController?.navigationBar.isUserInteractionEnabled 没有按预期工作

iphone - MyObject对象是否可能;包含垃圾?

objective-c - 奇怪的错误 : insertRowsAtIndexPaths in UITableView crashes with NSInternalInconsistencyException

ios - 为什么 UITableview 在重新加载数据时向上滚动

ios - UITableViewCell 内的 UITextView 键盘问题

ios - xcode UIBarButtonItem View