После обновления каталога товаров на сервере, приложение crash. Все дело в updateTime, но я не могу понять что с ней. Помогите )

При первой загрузке приложения у меня все прекрасно отрабатывает, и при повторной тоже. Но после обновления базы данных, приложение крашится. Я выяснил что причина в udateTime но я не могу понять что я делаю не так. Я Асинхронно подгружаю page и сохраняю их(все происходит одновременно) и все прекрасно работает до того момента пока не обновится Каталог товаров, что бы я заново его получил. И как раз при получении нового каталога приложение крашится с ошибкой 'Object has been deleted or invalidated.'

    private var updateTime = 0

    func fetchProducts(with group: DispatchGroup) {
    let request = CatalogTradesRequest(page: self.page, checkUpdateTime: self.checkUpdateTime())
    self.catalogService.fetchCatalogTrades(request) { [weak self] result in
        switch result {
        case .success(let response):
            if response.updateTime != nil {
                self?.updateTime = response.updateTime!
            }
            print("Time---1---- \(response.updateTime)" )
            
            if response.add.count != 0 {
                if (response.add.count + response.remove.count) == response.countByPage {
                let updateTime = UserDefaultsWorker.fetchActiveCatalogUpdateTime()
                    DispatchQueue.init(label: "background", attributes: .concurrent).async {
                        autoreleasepool {
                            self?.worker?.writeToRealm(
                                with: CatalogTradesResponse(
                                    add: response.add,
                                    remove: response.remove,
                                    updateTime: updateTime,
                                    countByPage: nil),and: group)
                        }
                    }
                    self?.page += 1
                    self?.fetchProducts(with: group)
                } else {
                    self?.worker?.writeToRealm(
                        with: CatalogTradesResponse(
                            add: response.add,
                            remove: response.remove,
                            updateTime: self?.updateTime,
                            countByPage: nil
                        ),
                        and: group
                    )
                    print("exit")
                    group.leave()
                        UserDefaultsWorker.saveActiveCatalogUpdate(self?.updateTime?? 0) 
                }
            } else {
                group.leave()
            }
        case .failure(let error):
            print("---\(String(describing: type(of: self))): Error in \(#function) - \(error.code) \(error.message)")
            group.leave()
        }
    }
}

func checkUpdateTime() -> Int? {
    let updateTime = UserDefaultsWorker.fetchActiveCatalogUpdateTime()
    if updateTime != nil {
        print(updateTime)
        if updateTime == 0 {
            return nil
        } else {
            return updateTime
        }
    } else {
        return updateTime
    }
}

Ответы (0 шт):