我对核心数据有些困惑?

时间:2015-03-03 06:01:07

标签: ios sqlite core-data

我是核心数据的新手,请帮助我一些混淆......

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

  2. 它如何比sqlite快。

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

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

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

  6. 请为我定义所有内容......

    提前致谢。

3 个答案:

答案 0 :(得分:2)

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

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

  
      
  1. 它如何比sqlite快。
  2.   

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

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

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

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

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

.sqlite数据库将存储在app sandbox文件夹中 请检查此sqlite storage

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

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

答案 1 :(得分:1)

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

  1. 内置更改跟踪和撤消支持。核心数据提供除基本文本编辑之外的撤消和重做的内置管理。

  2. Easy iCloud存储集成(使用NSManagedDocument

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

  4. 全面,自动,支持键值编码和键值观察。

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

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

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

答案 2 :(得分:0)

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

Use Core Data or not?