我对核心数据有些困惑?

I have some confusion in core data?

我是核心数据的新手,请帮助我解决一些困惑...

  1. 如果核心数据在后端使用sqlite,那为什么我们使用核心数据而不是sqlite??

  2. 它比 sqlite 快多少。

  3. 我读到一个不同之处,即在核心数据中,当我们想要编辑任何内容时,它会将所有数据加载到内存中..但是如果它加载了,那么为什么应用程序。不会变慢或崩溃。

  4. 如何显示存储在文档目录中的 (.sqlite) 文件的数据。

  5. 核心数据用于持久化存储,但它不是数据库(解释一下)???。

请给我定义一切...

提前致谢。

Core Data 是最好的选择,但如果您想以某种方式将应用程序移植到 android 或 windows 并希望保持代码相似,那么您可以选择 SQLITE,因为 SQLite 是得到所有主要平台的支持。而核心数据只是 iOS 的一部分。关于各种疑惑可以参考这个link

很难将 core-data 与 sqlite 进行比较,因为这是两种不同的技术。 然而,这里有一些你无法从开箱即用的 sqlite 中获得的东西。

  1. 内置更改跟踪和撤消支持。除了基本的文本编辑之外,Core Data 还提供内置的撤消和重做管理。

  2. 简单的 iCloud 存储集成(与 NSManagedDocument

  3. 可选择与应用程序的控制器层集成以支持用户界面同步。 例如:- Core Data 在 iOS

  4. 上提供 NSFetchedResultsController 对象
  5. 全自动,支持键值编码和键值观察。

  6. 您可以通过将 NSPredicate 对象与提取请求相关联来创建复杂查询,而不是编写 SQL。 NSPredicate 提供对基本函数、相关子查询和其他高级 SQL 的支持。通过 Core Data,它还支持适当的 Unicode、区域设置感知搜索、排序和正则表达式。

  7. 合并策略。 Core Data 提供内置的版本跟踪和乐观锁定,以支持自动解决多作者冲突。

  8. Core Data 可以通过延迟加载对象来减少程序的内存开销。它还支持部分物化的期货和写时复制数据共享。

  1. If core data use sqlite in back end then why we use core data not sqlite??

核心数据并不总是使用 SQLite,SQLite 是一种存储选项(使用最广泛),还有其他两种类型可用 检查这个 coredata store types

  1. How it is faster then sqlite.

核心数据不是 SQLite 的替代品,它就像 SQLite 的 ORM,它处理所有繁重的工作并提供更简单的接口来使用 SQLite,它处理存储连接、查询存储、管理和跟踪内存更改等等

  1. I read a difference that In core data when we want to edit anything it loads all data in memory..but if it loads then why app. not getting slow or crash.

这是错误的,核心数据不会将所有内容加载到内存中,除非您以某种方式查询它,通常当您获取实体时它 returns 使用该实体的 NSManagedObject 实例

  1. How to show data of a (.sqlite) file that store in Document Directory.

在 SQLite 文件中显示数据是什么意思,您将使用 NSPredicate 查询您想要的数据并获取对象数组作为响应

.sqlite 数据库将存储在应用程序沙箱文件夹中 检查这个 sqlite storage

  1. core data is use for persistence storage but it's not a data base(Explain me)???.

Coredata 不是持久性存储,它是持久性存储管理器,正如我上面所说,它处理所有繁重的工作,如创建连接、执行查询、将结果转换为 NSManagedObject、跟踪对象更改、将其持久化到 SQLite 和管理整个对象您加载到内存中的图表