Realm Swift2:模型和Realm模型类分离的最佳实践

Joh*_* B. 11 realm swift2

我刚开始使用Realm for Swift.阅读完文档后,我仍然记得几个问号.

我最大的一个是,如果有一个从Realm类中分离Model类的最佳实践.

例如,在Java MVC项目中,我们使用了DAO类(数据访问对象类),它们负责与数据库层的通信.我们相应的模型类只有注入的dao对象或我们使用的服务类(如CRUD操作).

如果我是一个领域"模型"类,现在看起来似乎是一切.但是在将对象持久化到数据库之后,更改UI-Layer中对象的属性会导致

'尝试修改写事务之外的对象 - 首先在RLMRealm实例上调用beginWriteTransaction.

这让我回到了我的初期:不应该在Realm对象和模型对象中分开.或者可以在View-Classes中使用"realm.write"进程吗?

我对此做了一些研究,但结果非常有效.

你如何在你的项目中处理这个问题.你有某种最佳实践或指导吗?

非常感谢约翰

TiM*_*TiM 4

正式地,(至少在 iOS 方面),没有既定的最佳实践来将模型类逻辑从实际的 Realm Object 子类中抽象出来。话虽这么说,我过去确实听说过一些应用程序确实执行这种逻辑以支持多种类型的数据框架。

如果我要这样做,我将为每个模型创建一个单独的对象类,实现我自己的关于如何获取/设置数据属性的 API,并使 Realm 对象成为该对象的内部成员。然后,该对象将充当我的应用程序逻辑与如何将该数据保存到 Realm 之间的通用接口。这样,如果我确实想更换数据框架,我可以简单地用新的数据对象替换我自己的数据对象,但保持 API 一致。

关于您发布的错误消息,为了确保数据完整性,您不能修改 Realm 对象(UI 线程或其他),除非它处于写入事务中。话虽这么说,您可以在该抽象对象中非常轻松地封装该逻辑(即在当前线程上打开 Realm 写入事务)。