【问题标题】:Realm architecture pattern [closed]领域架构模式
【发布时间】:2015-10-26 13:33:43
【问题描述】:

我从 CoreData 迁移了我的应用程序,我对事情的简单程度印象深刻。我可以删除很多代码:)

让我感到有点不舒服的是,Realm 遍布我的应用程序,创建了一个很大的依赖关系:我的应用程序有一个 MVVM 架构,如果只有模型是 Realm 所在的地方,我会感觉最好。

在迁移之后,我将 Result 和 List 对象发送到我的视图模型。使用 [Type] 对象不是更好吗?

你怎么看?您如何使用领域构建您的应用程序?

【问题讨论】:

    标签: ios swift mvvm realm


    【解决方案1】:

    您必须自行决定将 Realm 作为依赖项在架构中是否存在太大风险,但有几个很好的理由说明您应该直接使用 Realm 对象/集合:

    1. Realm 不是基于 SQLite 构建的,也不是 ORM。因此,当您访问 Realm 对象或集合时,该数据是内存映射的,并且仅在访问时才延迟加载。这意味着,如果您想将 Result 转换为 Objects 的 Swift 数组,或者将这些 Objects 的更糟糕的副本转换为不依赖于 Realm 的类,那么这将导致预先读取/复制所有数据Result,而不是 Realm 为您提供的高效方式。

    2. 默认情况下,Realm 实例会自动更新。这意味着通过直接使用领域ObjectResult,您可以将您的视图或在您的案例视图模型中绑定到这些对象上的更改。 Realm 实例在更新时发送通知 (relevant docs),允许您更新视图模型,然后关闭此视图(例如,如果您有一个由 Result 支持的表视图,您可以触发 @ 987654330@ 在通知之外的表格视图上,因为Result 实例现在将拥有最新的对象)。或者,您也可以在特定 Realm 对象上使用 Key-Value Observing 来响应其属性的更改以更新视图/视图模型 (relevant docs)。

    希望这有助于塑造您对建筑的看法。在撰写本文时,我们正在研究对象级通知,这将支持进一步的数据绑定功能。你可以关注这个here的进度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多