我应该使用 SQL 还是 Core Data?

Posted

技术标签:

【中文标题】我应该使用 SQL 还是 Core Data?【英文标题】:Should I use SQL or Core Data? 【发布时间】:2012-07-03 13:03:44 【问题描述】:

我正在创建一个 iPhone 应用程序,该应用程序将预先加载一组带有纬度/经度的位置,目前是 sqlite DB。我将计算这些位置与用户当前位置的距离,并将其显示在按距离排序的 TableView 中。

我应该只使用 sqlite DB 还是应该使用 Core Data?

如果我使用 Core Data,如何加载我的初始数据库?

是否有任何好的 Core Data 教程展示了如何从应用中预加载数据库和所有用户条目,因为我的应用将没有用户条目?

【问题讨论】:

【参考方案1】:

这是哲学。

如果您从数据库的角度考虑,并且从面向数据的角度进行设计,那么直接 sqlite 可能是您的最佳选择。 Core Data 有额外的复杂性,但它的最大好处是它适合那些从对象的角度考虑程序并希望其中一些对象在代码运行之间保留的人。

【讨论】:

我认为 Core Data 会不那么复杂,但这就是我们提问的原因。如果我说的是 500 个或更少的条目,我是否会通过使用 sqlite 使事情变得更复杂? 当我说更复杂时,我主要考虑的是设置和结构。 Core Data 实体有一个单独的设计工具,其中包含您需要弄清楚的属性。有更多的管理对象具有关于它们如何在线程中运行或不能运行的规则。但是,同样,如果您考虑对象,它的运行时使用可能会更容易。至于是否使用数据库...我不知道;数据库(或核心数据)在处理关系时具有优势,这听起来像是您不需要的东西。 你完全正确。我看到的关于 Core Data 的每个示例都使用了关系,我现在不需要。我熟悉设置 Core Data 的实体和属性,但是您可以预加载应用程序附带的数据吗?有没有关于如何做到这一点的好教程? 您可以使用代码来检测它是否是程序的第一次运行,如果是,则构建您的数据模型。您还可以使用与真实项目相同的模型编写“数据加载器”程序,在本地运行它,并在构建时将其输出复制到您的项目中。我理解你不能做的是获取一个简单的 sqlite 数据库并要求 Core Data 使用它。

以上是关于我应该使用 SQL 还是 Core Data?的主要内容,如果未能解决你的问题,请参考以下文章

Core Data iCloud 同步还是其他?

我应该使用 .NET Core 还是 .NET 5? [关闭]

使用 Core Data 实现第一范式 (1NF)

RestKit / Core Data / Offline - 我需要 UUID 还是 RestKit 足够聪明?

访问 Core Data 中的特定条目

Core Data 数据库正确存储