境界建筑模式

时间:2015-10-26 13:33:43

标签: ios swift mvvm realm

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

让我觉得有点不舒服的一件事是,Realm在我的应用程序中传播创建了一个很大的依赖:我的应用程序有一个MVVM架构,如果只有模型将成为Realm所在的地方,我会感觉最好。

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

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

1 个答案:

答案 0 :(得分:4)

您必须自己决定是否将Realm作为依赖项在架构中承担过多风险,但有几个很好的理由可以解释为什么您应该直接使用Realm对象/集合:

  1. Realm不是基于SQLite构建的,也不是ORM。因此,当您访问Realm对象或集合时,该数据仅在访问时进行内存映射和延迟加载。这意味着如果要将Result转换为Objects的Swift数组,或者将那些Objects的较差副本转换为不依赖于Realm的类,则会导致读取/复制所有数据Result中的前期,而不是Realm为您做的有效方式。

  2. 默认情况下,Realm实例会自动更新。这意味着通过直接使用领域ObjectResult,您可以将视图或案例视图模型绑定到这些对象上的更改。 Realm实例在更新时发送通知(relevant docs),允许您更新视图模型,然后更新视图(例如,如果您有Result支持的表视图,则可以在通知的表视图上触发reloadData,因为Result实例现在将具有最新的对象)。或者,您还可以对特定Realm对象使用键值观察来响应其属性的更改,以更新视图/视图模型(relevant docs)。

  3. 希望这有助于塑造您对建筑的看法。在撰写本文时,我们正在开发对象级通知,以实现进一步的数据绑定功能。您可以按照here上的进度进行操作。