【问题标题】:ios swift 4 local database explanationios swift 4本地数据库解释
【发布时间】:2018-05-06 17:27:56
【问题描述】:

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

所以我需要有关 iO 上本地数据库的帮助或简单说明。 我已经阅读了有关 CoreData 和有关 iO 的 SQLite 的信息。我知道CoreData“不仅仅是一个数据库!”我不能问关于CoreData vs SQLite的问题”..但我必须..我试图理解但它并没有按照我的需要写得那么清楚和简单。如果xcode和iOs不自然地支持SQLite它仍然是使用起来安全吗?当你只需要本地数据库时使用CoreData好不好?

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

【问题讨论】:

    标签: ios sqlite core-data swift4 xcode9


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢,我决定使用 Realm。我只是希望我在开发 android 时早点了解领域。
    【解决方案2】:

    来自Apple Reference

    什么是核心数据?

    Core Data 是一个框架,用于管理应用程序中的模型层对象。它为与对象生命周期和对象图管理(包括持久性)相关的常见任务提供通用和自动化的解决方案。

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

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

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

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

    使用像 sqlite 这样的东西的好处是可移植性;您在 Android 应用或网站中使用的数据库和查询可以在 iOS 应用中使用。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多