【问题标题】:I have some confusion in core data?我对核心数据有些困惑?
【发布时间】:2015-03-03 06:01:06
【问题描述】:

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

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

  2. 它比 sqlite 快多少。

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

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

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

请给我定义所有的东西...

提前致谢。

【问题讨论】:

  • 谢谢,Rajan,但我已经尝试了所有链接,但我没有得到任何满意的答案......
  • 基本上在核心数据中我们已经绕过了sqlite打开和关闭连接的工作。这使它更快。其次,它适用于对象。
  • 您首先必须通过到达 DD 路径打开 .sqlite 文件,然后打开连接。
  • 是的..但是你能告诉我项目导航器中.xcdatamodeld中XC的含义吗(是xcodedatamodel)???

标签: ios sqlite core-data


【解决方案1】:
  1. 如果核心数据在后端使用 sqlite,那为什么我们使用核心数据而不是 sqlite??

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

  1. 它比 sqlite 更快。

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

  1. 我读到了一个区别,即在核心数据中,当我们想要编辑任何内容时,它会将所有数据加载到内存中......但如果它加载,那么为什么 app.不会变慢或崩溃。

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

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

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

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

  1. 核心数据用于持久存储,但不是数据库(请解释)???。

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

【讨论】:

  • 谢谢 Ramesh...我的意思是问题 3 是...我们可以在文件中查看我们的数据而不像在 sqlite 数据库中那样获取我们使用 sqlite manager 来打开文件。
  • 是的,应用程序数据确实存储在 .sqlite 文件中,它将位于 ~/Library/Application Support/iPhone Simulator/User/Applications/{APP ID?}/Library/Application Support/数据库(在模拟器中)检查此链接stackoverflow.com/questions/24290989/…很难看到文件真实设备,因为您无法直接访问它但存储相同
  • 还可以查看它,您可以在设备选项中从 xcode 下载容器,然后在设备中运行时显示包内容
  • 但是你能告诉我项目导航器中.xcdatamodeld中XC的含义吗(是xcodedatamodeld)???
【解决方案2】:

很难将核心数据与 sqlite 进行比较,因为这是两种不同的技术。 然而,这里有一些你不会从开箱即用的 sqlite 中获得的东西。

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

  2. 轻松集成 iCloud 存储(使用 NSManagedDocument

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

  4. 完全、自动、支持键值编码和键值观察。

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

  6. 合并策略。 Core Data 提供内置的版本跟踪和乐观锁定来支持自动多写入器冲突解决。

  7. Core Data 可以通过延迟加载对象来减少程序的内存开销。它还支持部分物化的future,以及copy-on-write数据共享。

【讨论】:

    【解决方案3】:

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

    Use Core Data or not?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 2020-11-12
      相关资源
      最近更新 更多