我的UITableViewController工作正常,直到最近它在初始加载时在tableview的numberOfRowsInSection崩溃。
使用以下方法获取数据源:
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
}
}
如何调试此错误?之前工作正常。真的很困惑,为什么它现在崩溃了。
答案 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
}