我们正在将项目转换为使用Realm。到目前为止,特别是对于Realm Browser来说,我们印象深刻(非常方便!)。
结果,出现了一些问题,我们希望在继续进行之前先弄清一些具体的使用模式。我们的应用程序具有大量的多线程(API调用,动画等),因此在阅读问题时请记住这一点,因为我知道Realm实例无法(当前)跨线程访问。
- 我们应该如何担心重复创建Realm实例?开销是多少?
- 我们是否应该在ViewControllers或Singletons中保留Realm实例以便重复使用?我们已经尝试过了,但是有时实例是从不同的线程访问的,因此我们不得不每次都恢复为创建新实例。
- 在Realm实例上访问关系属性时,读取的结果数据是保留在内存中还是每次都从磁盘读取?我们是否需要担心由于深层关系访问而导致保留的Realm实例太大?
什么时候需要刷新Realm实例?我注意到,当我在Realm浏览器中进行更改时,它们会反映在保留的Realm中,而无需调用refresh。- 根据文档,每个域上似乎都有一个导致该问题的自动刷新属性。
- 是否出于不当行为而使用该
realm
财产Object
?如果使用对象的函数未创建对象或领域(当然是在同一线程上),则我们已将其用于写入领域。
例如...
func saveStuff(thingToUpdate: Object?) {
if let thingToUpdate = thingToUpdate, let realm = thingToUpdate.realm {
realm.write {
thingToUpdate.name = "lionpants"
}
}
}
提前致谢。期待您的答复。:D