Зараз ми перетворюємо проект на використання Realm. На даний момент ми дуже вражені, особливо завдяки браузеру Realm (так зручно!).
Як результат, з’явилося декілька запитань, і ми хотіли б отримати деякі конкретні схеми використання, перш ніж йти далі. Наш додаток є багатопотоковим (виклики API, анімація тощо), тому майте це на увазі під час читання питань, оскільки я знаю, що екземпляри Realm не можуть бути доступні в усіх потоках (на даний момент).
- Наскільки нас турбує неодноразове створення екземплярів Realm? Що таке накладні витрати?
- Чи варто нам турбуватися про збереження екземплярів Realm у ViewControllers або Singletons для повторного використання? Ми пробували це, але іноді до екземплярів звертаються з різних потоків, тому нам доводилося щоразу повертатися до створення нового екземпляра.
- Під час доступу до властивостей відносин у екземплярах Realm, чи зберігаються в пам'яті отримані дані, які читаються, або щоразу з диска? Чи потрібно нам турбуватися про те, що збережені екземпляри Realm стануть занадто великими через глибокий доступ до відносин?
Коли потрібно оновлення екземпляра Realm? Я помітив, що коли я вношу зміни у браузер Realm, вони відображаються у збереженому Realm без виклику оновлення.- Схоже, у кожній області є властивість автоматичного оновлення, яка спричиняє це відповідно до документації.
- Доступ до
realm
власності наObject
поганою практикою? Ми використовували це для запису в Realm, якщо функція, що використовує об'єкт, не створила об'єкт або Realm (звичайно, у тому ж потоці).
Наприклад...
func saveStuff(thingToUpdate: Object?) {
if let thingToUpdate = thingToUpdate, let realm = thingToUpdate.realm {
realm.write {
thingToUpdate.name = "lionpants"
}
}
}
Заздалегідь спасибі. Чекаю ваших відповідей. : D