<分区>
我从 CoreData 迁移了我的应用程序,事情原来如此简单给我留下了深刻的印象。我可以删除很多代码:)
让我感到有点不舒服的一件事是 Realm 遍及我的应用程序,产生了很大的依赖性:我的应用程序有一个 MVVM 架构,如果模型是 Realm 所在的地方,我会感觉最好。
在迁移之后,我将 Result 和 List 对象发送到我的 View 模型。改用 [Type] 对象不是更好吗?
你怎么看?您如何使用 Realm 构建您的应用程序?
<分区>
我从 CoreData 迁移了我的应用程序,事情原来如此简单给我留下了深刻的印象。我可以删除很多代码:)
让我感到有点不舒服的一件事是 Realm 遍及我的应用程序,产生了很大的依赖性:我的应用程序有一个 MVVM 架构,如果模型是 Realm 所在的地方,我会感觉最好。
在迁移之后,我将 Result 和 List 对象发送到我的 View 模型。改用 [Type] 对象不是更好吗?
你怎么看?您如何使用 Realm 构建您的应用程序?
最佳答案
您必须自己决定将 Realm 作为依赖项是否会给体系结构带来太大的风险,但是有几个很好的理由说明您应该直接使用 Realm 对象/集合:
Realm 不是基于 SQLite 构建的,也不是 ORM。因此,当您访问 Realm 对象或集合时,该数据是内存映射的,并且仅在访问时延迟加载。这意味着如果你想将一个 Result 转换成一个 Objects
的 Swift 数组,或者更糟糕的是将那些 Objects
的副本转换成一个不依赖于 Realm 的类,那么这将导致预先读取/复制 Result
中的所有数据,而不是 Realm 为您提供的高效方式。
默认情况下,Realm 实例会自动更新。这意味着通过直接使用 Realm Object
或 Result
,您可以将您的 View 或在您的案例中的 View 模型绑定(bind)到这些对象上的更改。 Realm 实例在更新时发送通知(relevant docs),允许您更新 View 模型,然后关闭此 View (例如,如果您有一个由 Result
支持的 TableView ,您可以在通知的 TableView 上触发 reloadData
,因为 Result
实例现在将具有最新的对象)。或者,您也可以在特定的 Realm 对象上使用键值观察来响应其属性的变化,从而更新 View / View 模型 (relevant docs)。
希望这有助于塑造您对建筑的看法。在撰写本文时,我们正在研究对象级通知,这将支持进一步的数据绑定(bind)功能。您可以关注此here的进展.
关于ios - Realm 架构模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33347094/
相关文章:
ios - 使用 MapKit 时 Xcode 7.3 不会自动完成
ios - 如何,Xamarin iOS 中的 applicationDidBecomeActive?
wpf - RadBusyIndicator不显示ViewModel的PRISM/MEF/WPF
wpf - 哪个是用于 WPF 的最佳或广泛使用的 MVVM 工具包?
objective-c - 当用户键入文本时为文本着色(iOS、Xcode)
swift - NSAttributedString 和表情符号 : the range I never set seems to be set
ios - UIView center 属性给出了意想不到的结果
objective-c - swift 3 : stringByReplacingCharactersInRange alternatives