Мы находимся в процессе преобразования проекта в использование Realm. Мы действительно впечатлены пока что с помощью Realm Browser (так удобно!).Правильные модели использования/лучшие практики использования в реальном времени?
В результате возникли несколько вопросов, и мы хотели бы получить некоторые конкретные шаблоны использования, прежде чем двигаться дальше. Наше приложение сильно многопоточно (вызовы API, анимации и т. Д.), Поэтому имейте это в виду при чтении вопросов, так как я знаю, что экземпляры Realm не могут быть доступны через потоки (в настоящее время).
- Насколько мы обеспокоены, если мы будем неоднократно создавать экземпляры Царства? Что такое накладные расходы?
- Должны ли мы беспокоиться о сохранении экземпляров Realm в ViewControllers или Singletons для повторного использования? Мы пробовали это, но иногда экземпляры получают доступ из разных потоков, поэтому нам приходилось возвращаться к созданию нового экземпляра каждый раз.
- При доступе к свойствам отношений в экземплярах Realm есть результирующие данные, которые считаются сохраненными в памяти, или каждый раз считывается с диска ? Нужно ли беспокоиться о том, что сохраненные экземпляры Realm становятся слишком большими из-за глубокого доступа к отношениям?
Когда необходимо обновить экземпляр Realm? Я заметил, что когда я вношу изменения в браузер Realm, они отражаются в сохраненном Realm без обновления вызова.- Похоже, что в каждой области есть свойство Auto-Refresh, которое вызывает это согласно документации.
- Доступ к
realm
недвижимости наObject
плохой практике? Мы использовали это для записи в Realm, если функция, использующая объект, не создавала объект или Realm (в том же потоке, конечно).
Например ...
func saveStuff(thingToUpdate: Object?) {
if let thingToUpdate = thingToUpdate, let realm = thingToUpdate.realm {
realm.write {
thingToUpdate.name = "lionpants"
}
}
}
Спасибо заранее. Я с нетерпением жду ваших ответов. : D
Фантастический! Спасибо за супер быстрый ответ. Мы обязательно поставим больше вопросов, пока они появятся! Вероятно, добавление в автозаполнение, включенное по умолчанию в основном потоке, также должно быть добавлено в документацию. :) – lionpants
Совсем нет! Большое спасибо! Ах, на самом деле я стою исправлено. Я только что вернулся и проверил код, чтобы подтвердить это, и похоже, что autorefresh включен по умолчанию во всех потоках. Я обновил свой ответ, чтобы отразить это. – TiM
Я действительно стесняюсь этой проблемой в отношении исключения памяти, и я не могу обойти ее, и пользователи очень жалуются на производственное приложение. – Eenvincible