#realm #mongodb-realm
#область #mongodb-область
Вопрос:
Мы используем область MongoDB в нашем приложении.
При первом подключении пользователя к приложению обратный вызов ProgressNotifcation запускается правильно, и он будет работать и запускаться всякий раз, когда происходит новая загрузка. Даже если загрузка не ожидается, обратный вызов ProgressNotification будет запущен (передача объекта ProgressNotification в обратном вызове будет содержать значения из последней загрузки) по крайней мере один раз (при его создании). Я предположил, что это связано с тем, что мы загружаем первый набор данных пользователя.
Но после завершения работы приложения и его повторного запуска обратный вызов ProgressNotification больше не запускается, пока приложение не получит новые данные. И с этого момента обратный вызов будет вызываться каждый раз, когда он нам понадобится.
Похоже, что теперь фреймворку требуется первая загрузка, поскольку приложение запускается, чтобы обратный вызов ProgressNotification запускался каждый раз, когда нам это нужно.
Это работало в предыдущей версии Realm (5.X.X). Мы только что завершили миграцию в область 10 и обнаружили эту проблему. Я немного застрял здесь, не знаю, является ли это намеренным изменением или ошибкой с моей стороны. Но я почти уверен, что это работало в предыдущей версии SDK.
Кто-нибудь может мне помочь с этим? Спасибо
Примечание: это больше не работает в обоих режимах: .forCurrentlyOutstandingWork и .reportопределенно
Пример
self.token = syncSession.addProgressNotification(for: .download, mode: .forCurrentlyOutstandingWork) { progress in
.......Some code........ <- this part of the code is not triggered anymore
}
РЕДАКТИРОВАТЬ — 21/12/2020
Для пояснения, возвращаемый токен содержит значение, и .invalidate не вызывается.
В сеансе нет ошибки, и любая новая загрузка запускает обратный вызов. После первоначальной загрузки все работает, как ожидалось. Это означает, что когда я добавляю progressNotifcation позже, обратный вызов запускается немедленно с ходом предыдущей загрузки. Но если нет начальной загрузки, обратный вызов никогда не вызывается.
Для области действия этот метод фактически находится в пользовательском издателе, который я создал, и он не освобожден.
Область 10.5.0
iOS 14.3
Комментарии:
1. Вопрос немного расплывчатый, и может быть множество причин, по которым код не работает, которые могут не иметь никакого отношения к этому коду. Было бы неплохо выполнить некоторые устранения неполадок; когда вызывается код
self.token
, заполняется? Произошла ли ошибка в сеансе? Есть ли какие-либо фактические дополнительные байты для загрузки? Выходит ли представление, содержащее код, за пределы области видимости, или .invalidate вызывается для токена? Пожалуйста, уточните и обновите вопрос, и мы посмотрим.2. @Jay Привет, спасибо за ответ! Я обновил вопрос некоторой информацией, которую вы задали.