ios swift 4 本地数据库解释

ios swift 4 local database explanation

我正在将一个项目从 Android 迁移到 iOs。我是 xCode 的新手,并且已经只对 Swift 进行了一些练习(o.w。我只是 iOs)

的编程新手

所以我需要有关 iOs 上本地数据库的帮助或简单解释。 我读过 iOs 的 CoreData 和 SQLite。我知道 CoreData 是 "not just a database!",我不能问有关 CoreData 与 SQLite 的问题”。但我必须......我试图理解,但它并没有像我需要的那样清楚和简单地写出来。如果 SQLite 不是' xcode 和 iOs 自然支持使用它仍然安全吗?当您只需要本地数据库时使用 CoreData 好吗?

那么,当我需要在我的 phone 上存储数据并且我在本地设备上的数据库记录不会超过 50000 条时,我应该使用什么?数据将来自服务器 (JSON),其中一些来自设备测量

您可以同时使用 SQLite 和 Core Data。它们都被广泛使用,使用它们不会有任何问题。如果您想使用 SQLite,我建议您使用 FMDB,因为这将使使用 SQLite 数据库变得更加容易。 Core Data 的性能非常好,但你说你不会有大量数据,所以它可能有点矫枉过正,而且使用起来有点冗长。

如果您希望服务器能够直接向您发送 SQLite 文件作为下载,我认为 SQLite 具有优势。到处都支持 SQLite,因此很容易在服务器上构建数据库并将其作为文件发送到您的 phone。 Core Data 仅在 iOS 上受支持,因此您必须翻译来自 JSON 的信息,但您声明您已经在这样做了。

就我个人而言,我认为 Realm 是最容易为 iOS 设置的本地数据库。我能够以惊人的速度将它添加到我们的一些代码库中,并且它们有很好的文档。他们有一个相当大的社区,很容易获得帮助以及有关如何入门的大量教程。 Realm 也是跨平台的,因此您可以在 Android 应用程序中使用相同的数据库。如果您熟悉 Code First 数据库方法的数据库 ORM,那么您会对 Realm 感到宾至如归。

在我工作的公司,我们在生产应用程序中使用所有这三个,所以这只是一个品味问题和您无法控制的其他要求。这三个都会做你想做的事。

来自Apple Reference

What is Core Data?

Core Data is a framework that you use to manage the model layer objects in your application. It provides generalized and automated solutions to common tasks associated with object life cycle and object graph management, including persistence.

从这里可以看出Core Data和sqlite等数据库的本质区别;核心数据处理对象。这些对象的持久化虽然是 Core Data 的常见用途,但并不是强制性的。 Core Data 框架可以使用不同的后备存储,而 sqlite 是最常见的存储之一。

当你处理数据库时,你必须考虑表和行,你必须处理行数据和内存中对象之间的转换。使用 Core Data,您的模型对象可以子类化 NSManagedObject,您可以使用 Core Data 直接保存和恢复它们。

对于数据库,您可以使用外键关联表之间的行,并且通常使用连接或其他查询来获取相关数据。使用 Core Data,您可以简单地将对相关对象的引用分配给第一个对象的 属性,例如employee.manager = someOtherEmployee 和 Core Data 将在您持久化数据时为您管理关系。当您检索数据时,您可以引用 employee.manager 来获取对管理器对象的引用,而无需显式执行 query/fetch;如有必要,Core Data 将自动从后备存储中检索对象。

除非您需要复杂的查询或连接,否则您可能不需要 sqlite。 Core Data 有一些学习曲线,但第一个障碍是了解它不是数据库,您不应该将其视为数据库。

使用sqlite之类的优点是可移植性;您在 Android 应用程序或网站中使用的数据库和查询可以在 iOS 应用程序中使用。

让您了解 Core Data 如何在您的情况下工作;

  • 您的数据以 JSON 个对象的形式出现,因此使用 Swift 4 Codeable 您可以轻松地将 JSON 转换为 Swift 个对象的集合.
  • Xcode 将根据您的 Core Data 模型为您创建 Core Data Entity 对象。
  • 您需要做的就是为这些 类 添加扩展以实现 Codeable,然后您可以在本地保留 JSON 数据,几乎不需要额外的代码。