致命错误:意外发现零 - 行数

时间:2016-01-19 15:59:50

标签: ios swift uitableview realm fatal-error

我的UITableViewController工作正常,直到最近它在初始加载时在tableview的numberOfRowsInSection崩溃。

enter image description here

使用以下方法获取数据源:

  func reloadTheTable()
  {
    datasource = PlaceDataController.fetchAllPlaces()
    tableView?.reloadData()
  }

我的Realm模型中的方法是:

class func fetchAllPlaces() -> Results<PlaceItem>!
  {
    do
    {
      let realm = try Realm()
      return realm.objects(PlaceItem)
    }
    catch
    {
      return nil
    }
  }

如何调试此错误?之前工作正常。真的很困惑,为什么它现在崩溃了。

1 个答案:

答案 0 :(得分:4)

根据datasource返回类型,我猜fetchAllPlaces是一个隐式解包的可选项。

首先,fetchAllPlaces不应该返回隐式展开的可选项,因为您知道该值可以是nil,请将其替换为:

class func fetchAllPlaces() -> Results<PlaceItem>?
{
    do
    {
        let realm = try Realm()
        return realm.objects(PlaceItem)
    }
    catch
    {
        return nil
    }  
}

另外,将datasource声明为可选。

然后替换您的numberOfRowsInSection方法:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if let dataSource = datasource {
        return dataSource.count
    }
    return 0
}