Экземпляры областей с фоновым процессом теряют данные - PullRequest
0 голосов
/ 18 марта 2019

Я использую Realm для Swift только с конфигурацией памяти.Из-за обновления базы данных в фоновом потоке я создаю экземпляр Realm каждый раз, когда использую его.Это было упомянуто в документации Realm и еще один вопрос здесь https://stackoverflow.com/a/45375608/613121.

Но при тестировании базы данных я замечаю непредсказуемое поведение.Иногда база данных была пустой и обновление пополняет базу вместо обновления.Причина, по-видимому, заключается в том, что Царство было освобождено после записи.

Решение может заключаться в том, чтобы сохранить сильную ссылку в главном потоке.Я сохраняю конфигурацию Realm в синглтоне.Было бы безопасно, чтобы синглтон возвращал новую Царство с той же конфигурацией для обновлений и содержал бы сильную ссылку на другую Царство для предотвращения потерь?

1 Ответ

1 голос
/ 19 марта 2019

Похоже, это должно работать нормально. Вам придется это попробовать, и это, вероятно, быстрее, чем ждать здесь окончательного ответа.

Я бы написал одноэлементный класс, который как часть конструктора определяет конфигурацию области и сохраняет ее, а также открывает и сохраняет экземпляр этой области. Затем я добавил бы к этому классу метод доступа для использования вашими потоками; он вернет новый экземпляр области, используя ту же конфигурацию. Когда они выходят из области видимости (и вы должны позволить им выходить из области видимости), ваша область будет сохраняться из-за того, что экземпляр-одиночка поддерживает свою ссылку.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...