Передача объекта из БД Realm на другой контроллер UITabBar

realm
ios
swift
xcode

#1

Подскажите, пожалуйста, пытаюсь решить проблему передачи экземпляра класса на другой контроллер с использованием БД Realm.

У меня есть основной контроллер, который хранит объекты по модели следующие данные:

class Route: Object {
    @objc dynamic var routeImage: Data?
    @objc dynamic var routeName: String?
    @objc dynamic var numberOfPersons = 0.0
    @objc dynamic var dateOfDeparture: String?
    @objc dynamic var dateOfArrival: String?
    let placeToVisit = List<Place>()
    let person = List<Person>()
}

В том контроллере, в который мне нужно передать эти данные я создал

var currentRoute: Route!

В Storyboard я указал идентификатор “showDetail” от ячейки контроллера до UITabBar, а в основном контроллере, я создал метод:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetail" {
        guard let indexPath = tableView.indexPathForSelectedRow else {return}

        let newPlaceVC = segue.destination as! InformationViewController
        newPlaceVC.currentRoute = routes[indexPath.row]
    }
}

Но он не является валидным, приложение крашится по тапу на ячейку. Полагаю это сработало бы если был не tabBar, а обычный table, view контроллеры. Я искал решения и все на что наткнулся, это реализация через singleton. Сейчас у меня масса вопросов, а действительно ли это будет правильным решением, т.к опять же люди говорят это нарушает “модульность” приложения и несет свои проблемы, да и тут же главный вопрос, а как это делается через синглтон? Что нужно учесть, с чего начать?


#2