ios swift 4本地数据库说明

ios swift 4本地数据库说明,ios,sqlite,core-data,swift4,xcode9,Ios,Sqlite,Core Data,Swift4,Xcode9,我正在用一个项目从Android迁移到iOs。我对xCode完全不熟悉,而且只在Swift上做了一些练习(另外,我对iOs编程还很陌生) 所以我需要关于iOs上本地数据库的帮助或简单解释。 我读过CoreData和iOs版的SQLite。我知道CoreData“不仅仅是一个数据库!”我不能问关于CoreData和SQLite的问题。但我必须……我试着理解,但它并不像我需要的那样清晰和简单。如果xcode和iOs不支持SQLite,那么使用它仍然安全吗?当你只需要本地数据库时,使用CoreData

我正在用一个项目从Android迁移到iOs。我对xCode完全不熟悉,而且只在Swift上做了一些练习(另外,我对iOs编程还很陌生)

所以我需要关于iOs上本地数据库的帮助或简单解释。 我读过CoreData和iOs版的SQLite。我知道CoreData“不仅仅是一个数据库!”我不能问关于CoreData和SQLite的问题。但我必须……我试着理解,但它并不像我需要的那样清晰和简单。如果xcode和iOs不支持SQLite,那么使用它仍然安全吗?当你只需要本地数据库时,使用CoreData好吗


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

您可以同时使用SQLite和Core数据。它们都被广泛使用,您在使用它们时不会遇到任何问题。如果您想使用SQLite,我建议您使用它,因为它会使使用SQLite数据库变得更容易。Core数据性能非常好,但您说您不会有太多的数据,所以它可以过分使用,使用起来有点冗长

我认为,如果您希望您的服务器能够直接向您发送SQLite文件作为下载,SQLite有一个优势。SQLite在任何地方都受支持,因此很容易在服务器上构建数据库并将其作为文件发送到您的手机。核心数据仅在iOS上受支持,因此您必须从JSON转换信息,b但是你说你已经在做了

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

在我工作的公司,我们在生产应用程序中使用这三种应用程序,因此这仅仅是一个口味问题和您无法控制的其他要求。这三种应用程序都将满足您的需求。

来自

什么是核心数据?

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

从中可以看出核心数据和数据库(如sqlite)之间的本质区别;核心数据处理对象。这些对象的持久化虽然是核心数据的常用,但不是强制性的。核心数据框架可以使用不同的备份存储,sqlite是最常见的存储之一

在处理数据库时,您必须考虑表和行,并且必须处理行数据和内存对象之间的转换。对于核心数据,您的模型对象可以子类化
NSManagedObject
,您可以使用核心数据直接持久化和还原它们

对于数据库,您可以使用外键来关联表之间的行,并且通常使用联接或其他查询来获取相关数据。对于核心数据,您只需将对相关对象的引用分配给第一个对象的属性,例如
employee.manager=someOtherEmployee
,核心数据将管理该关系保存数据时为您发货。检索数据时,您可以参考
employee.manager
以获取对manager对象的引用,而无需显式执行查询/提取;如有必要,核心数据将自动从备份存储中检索对象

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

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

让您了解核心数据在您的情况下如何工作

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

谢谢,我决定使用Realm。我真希望在开发android时早点了解Realm。