UI 端和子项目中的 Core Data 最佳实践实现

Posted

技术标签:

【中文标题】UI 端和子项目中的 Core Data 最佳实践实现【英文标题】:CoreData best practice implmentation on the UI side and in subproject 【发布时间】:2013-04-17 08:18:55 【问题描述】:

应用场景:在 UI 上,点击一个按钮从服务器获取联系人列表。请求转到子项目,该子项目进行下载和解析,并通过其委托将结果返回给 UI。到目前为止一切正常。假设没有互联网连接,我们不能有联系人列表。为了解决这个问题,我想缓存核心数据中的数据。如果没有互联网,缓存的数据将被返回。现在困扰我的问题是,是否可以创建一个数据模型并在子项目中使用它来保存数据,以及在从同一数据模型中提取和编辑数据的 UI 中使用它? 所以基本上我想从不同的子项目和 UI 访问核心数据。 我找不到有关此问题的提示或教程。有什么想法吗?

提前致谢!

编辑:

添加到父项目“a”的项目“b”。项目“b”实际上是一个静态库。

如果我让库来保存数据并将数据返回到 UI,那么从核心数据中获取所有数据然后将其发送到 UI 会不会效率低下?

我实际上希望有一种方法可以在 UI 和库中使用相同的数据模型。 我想防止 UI 有大量数据。最好有核心数据来处理包括在内。内存管理。我仍在阅读一些资料并尝试在测试项目中实现它。

【问题讨论】:

子项目是什么意思? 添加到父项目“a”的项目“b”。项目“b”实际上是一个静态库。 我假设您只需在子项目中创建适当的接口 - 允许直接访问子项目的核心数据听起来像是一个泄漏的抽象 @Paul.s 您是否建议仅将核心数据与库一起使用并将数据作为数组发送到 UI? 【参考方案1】:

我认为只有主项目应该处理持久性,因为你总是可以决定以不同的方式处理它 - 是否永久保存它,使用核心数据或自制的 sql 包装器......。因此,由代表决定如何处理更多数据。 但是与委托协议一起,您可以决定维护不同的模型协议,这些协议定义了您的模型可以容纳的内容。这将独立于实施。如果该对象符合协议,则委托现在可以将对象(无论是否核心数据模型)返回给委托人。子模块中的委托人现在可以检查服务器和/或缓存中的值。

【讨论】:

感谢您的建议。如果核心数据由库处理怎么办。 UI 和其他库应该通过那个负责任的库。您对此有何看法? 我觉得应该只负责核心数据或者通信。否则,您将创建一个难以维护和集成到其他项目中的怪物模块。所以什么都没赢。一个模块应该保证两件事:它只做一件事——但正确,它定义了清晰的接口。 是的,我也很担心怪物模块。好,谢谢。我仍然赞成在一个模块中完成核心数据。我不能在应用程序委托中执行此操作的原因是在转换到新的静态库时应该可以工作。关键点是应用应该随时可以在应用商店中使用,即使在开发过程中也是如此。 我对应用委托一无所知 我想我已经老了,脑子里正在编造一些东西。 :) 感谢您的想法和建议

以上是关于UI 端和子项目中的 Core Data 最佳实践实现的主要内容,如果未能解决你的问题,请参考以下文章

使用 Core Data 在视图中引用模型对象的最佳实践是啥?

在 iOS 上处理 Core Data 数据库的频繁更新和请求的最佳实践?

带有 JavaScript 后端和前端的多人游戏。最佳实践是啥?

将 ASP.Net Core Web App 项目发送给某人的最佳实践?

使用视图模型中的属性值实现方法的最佳实践是啥?

最佳实践,包括 Grails 中的 Angular UI