2016-01-19 3 views
0

Мой UITableViewController работал до недавнего времени, когда он разбился на numberviewsSectionResInSection таблицы при начальной загрузке.Неустранимая ошибка: неожиданно найден nil - число строк

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 
    } 
    } 

Как отлаживать эту ошибку? Раньше он работал хорошо. Неудивительно, почему он рушится сейчас.

ответ

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 
} 
+0

Я согласен, но весь код в методе numberOfRowsInSection можно заменить одной строкой 'возвращение DataSource .Count ??? 0'. –

+1

Спасибо, Майкл и Линдси. Ваши предложения работали! Ценить это. – ckraider

+0

@ LyndseyScott: Вы совершенно правы, я просто привык к этому формату для удобочитаемости и с трудом меняю ^^ –