Проблема с методом count при использовании его в работе с MongoDB

xcode
realm
ios

#1


прохожу Видео курс: Приложение на основе UITableView (Урок 17: Refactor Code to Use DB).
Сразу скажу весь функционал работает, кроме одного:
В методе numberOfRowsInSection мы привязывает количество элементов в Базе данных, и возвращает нужное нам количество в данный момент с помощью метода .count предварительно проверяя не пустая ли у нас база данных ( что бы наверное не получить nil). И вот в этот момент у меня падает приложение. если вписать вручную количество требуемых строк то всё работает, но очевидно, что база данных может меняться со временем и такой подход бесполезен.
Может кто-то знает по какой причине это может происходить (вроде как сделано всё в точности как описывалось в курсе, но всё равно не работает)


#2

Мне кажется isEmpty это свойство массива, но у объекта Results такого нету. Можете сразу писать places.count, т.к. в случае если там пусто, вернется 0.


#3

Пробовал изначально так, эффект тот же, краш при запуске.
Проблема вообще не понятна была, ибо объект типа Result является типом коллекции, и сам компилятор подсказывал через точечный синтаксис, методы доступные ему (isEmpty и count одни из них)


#4

Скорее всего у вас проблема в том, что работа с любой БД - это асинхронные запросы.
У вас при инициализации контроллера, объект БД
var places = Result<Place>!
задан как уже обязательно существующий, а это не так, тк запрос в бд идёт только после инициализации контроллера. При обращении к нему в методе формирования таблицы у вас всё падает, тк он ещё не существует.

Решение:

  1. задать этот параметр как опциональный `var places: Result? и соответственно обрабатывать количество элементов примерно так:

     if let pls = places {
         return pls.count
     } else {
         return 0
     }
    

или типа того

  1. Инициализировать этот объект сразу каким-то пустым объектом типа:
    var places = Results<Place>()
    или как там у это БД

#5

Точно, что-то я сразу не обратил на это внимание.
Тогда вот еще запись по проще

return places?.count ?? 0