Realm Swift2:model 和 Realm model class 分离的最佳实践
Realm Swift2: Best practice for model and Realm model class separation
我刚刚开始为 Swift 使用 Realm。阅读文档后,我仍然有几个问号。
我最大的问题是,如果有将模型 classes 与领域 classes 分离的最佳实践。
例如,在Java MVC 项目中,我们使用DAO classes(数据访问对象classes)负责与数据库层的通信。
我们相应的模型 classes 仅注入了 dao 对象,或者我们为此使用了服务 classes(如 CRUD 操作)。
如果我有一个领域“模型”class,现在这似乎是一切。但是在将对象持久化到数据库之后,更改 UI-Layer 中对象的属性会导致
'Attempting to modify object outside of a write transaction - call
beginWriteTransaction on an RLMRealm instance first.'
虽然这让我回到了最初的想法:这不应该在 Realm 对象和模型对象中分开。或者在 View-类 中有 "realm.write" 个进程可以吗?
我对此做了一些研究,但结果非常不一致。
你在你的项目中是如何处理这个问题的。您有什么最佳实践或指导吗?
非常感谢
约翰
正式地,(至少在 iOS 方面),没有确定的最佳实践来将模型 class 逻辑从实际的领域对象子 class 中抽象出来。话虽这么说,我肯定听说过过去有应用程序执行这种逻辑以支持多种类型的数据框架。
如果我要这样做,我会为每个模型创建一个单独的对象 class 关于如何 get/set 数据属性实现我自己的 API,并创建 Realm 对象此对象的内部成员。然后,该对象将作为我的应用程序逻辑与如何将该数据保存到 Realm 之间的通用接口。这样,如果我确实想换掉数据框架,我可以简单地用一个新的数据对象替换我自己的数据对象,但要保持 API 一致。
关于您发布的错误消息,为了确保数据完整性,您不能修改 Realm 对象(UI 线程或其他),除非它处于写入事务中。话虽这么说,您可以在该抽象对象中很容易地封装该逻辑(即在当前线程上打开一个 Realm 写入事务)。
我刚刚开始为 Swift 使用 Realm。阅读文档后,我仍然有几个问号。
我最大的问题是,如果有将模型 classes 与领域 classes 分离的最佳实践。
例如,在Java MVC 项目中,我们使用DAO classes(数据访问对象classes)负责与数据库层的通信。 我们相应的模型 classes 仅注入了 dao 对象,或者我们为此使用了服务 classes(如 CRUD 操作)。
如果我有一个领域“模型”class,现在这似乎是一切。但是在将对象持久化到数据库之后,更改 UI-Layer 中对象的属性会导致
'Attempting to modify object outside of a write transaction - call beginWriteTransaction on an RLMRealm instance first.'
虽然这让我回到了最初的想法:这不应该在 Realm 对象和模型对象中分开。或者在 View-类 中有 "realm.write" 个进程可以吗?
我对此做了一些研究,但结果非常不一致。
你在你的项目中是如何处理这个问题的。您有什么最佳实践或指导吗?
非常感谢 约翰
正式地,(至少在 iOS 方面),没有确定的最佳实践来将模型 class 逻辑从实际的领域对象子 class 中抽象出来。话虽这么说,我肯定听说过过去有应用程序执行这种逻辑以支持多种类型的数据框架。
如果我要这样做,我会为每个模型创建一个单独的对象 class 关于如何 get/set 数据属性实现我自己的 API,并创建 Realm 对象此对象的内部成员。然后,该对象将作为我的应用程序逻辑与如何将该数据保存到 Realm 之间的通用接口。这样,如果我确实想换掉数据框架,我可以简单地用一个新的数据对象替换我自己的数据对象,但要保持 API 一致。
关于您发布的错误消息,为了确保数据完整性,您不能修改 Realm 对象(UI 线程或其他),除非它处于写入事务中。话虽这么说,您可以在该抽象对象中很容易地封装该逻辑(即在当前线程上打开一个 Realm 写入事务)。