我们正在将一个项目转换为使用Realm。到目前为止,我们对Realm Browser(非常方便!)印象深刻。
因此,在继续之前,我们想要制定一些具体的使用模式,出现了一些问题。我们的应用程序是高度多线程的(API调用、动画等),因此在阅读问题时,请牢记Realm实例当前不能跨线程访问。
- 我们应该担心反复创建Realm实例吗?这会带来什么开销?
- 我们是否应该保留ViewControllers或Singletons中的Realm实例以供重复使用?我们尝试过这样做,但有时从不同的线程访问实例,因此我们不得不每次都创建一个新的实例。
- 当访问Realm实例上的关系属性时,读取的数据是否会被保留在内存中,还是每次都从磁盘读取?我们是否需要担心由于深层关系访问而变得太大的保留Realm实例?
何时需要刷新Realm实例?我注意到当我在Realm浏览器中进行更改时,它们会在保留的Realm中反映出来,而无需调用refresh。- 根据文档,似乎每个Realm上都有一个自动刷新属性可以导致这种情况。
- 访问
Object
上的realm
属性是否是不好的实践?我们在写入Realm时使用了它,如果使用对象的函数没有创建对象或Realm(当然是在同一线程上)。
例如...
func saveStuff(thingToUpdate: Object?) {
if let thingToUpdate = thingToUpdate, let realm = thingToUpdate.realm {
realm.write {
thingToUpdate.name = "lionpants"
}
}
}
提前感谢您,期待您的答案。 :D