我对核心数据有些困惑?
Posted
技术标签:
【中文标题】我对核心数据有些困惑?【英文标题】:I have some confusion in core data? 【发布时间】:2015-03-03 06:01:06 【问题描述】:我是核心数据的新手,请帮助我解决一些困惑...
如果核心数据在后端使用 sqlite,那为什么我们使用核心数据而不是 sqlite?
它比 sqlite 快多少。
我读到了一个区别,在核心数据中,当我们想要编辑任何内容时,它会将所有数据加载到内存中......但如果它加载了,那么为什么 app.不会变慢或崩溃。
如何显示存储在文档目录中的 (.sqlite) 文件的数据。
核心数据用于持久存储,但它不是数据库(请解释)???。
请给我定义所有的东西...
提前致谢。
【问题讨论】:
这个链接可能对你有帮助***.com/questions/28764224/use-core-data-or-not 谢谢,Rajan,但我已经尝试了所有链接,但我没有得到任何满意的答案...... 基本上在核心数据中我们已经绕过了sqlite打开和关闭连接的工作。这使它更快。其次,它适用于对象。 您首先必须通过到达 DD 路径打开 .sqlite 文件,然后打开连接。 是的..但是你能告诉我项目导航器中.xcdatamodeld中XC的含义吗(是xcodedatamodel)??? 【参考方案1】:如果核心数据在后端使用 sqlite,那为什么我们使用核心数据而不是 sqlite??
核心数据并不总是使用 SQLite,SQLite 是一种存储选项(使用最广泛),还有另外两种可用的类型 检查这个coredata store types
它比 sqlite 更快。
核心数据不是 SQLite 的替代品,它就像 SQLite 的 ORM,它处理所有繁重的工作并提供更简单的接口来使用 SQLite,它处理存储连接、查询存储、管理和跟踪内存更改等
我读到了一个区别,即在核心数据中,当我们想要编辑任何内容时,它会将所有数据加载到内存中......但如果它加载,那么为什么 app.不会变慢或崩溃。
这是错误的,核心数据不会将所有内容加载到内存中,除非您以任何方式查询它,通常当您获取实体时 返回 NSManagedObject 实例以使用该实体
如何显示存储在文档目录中的 (.sqlite) 文件的数据。
在 SQLite 文件中显示数据是什么意思,你将使用 NSPredicate 查询你想要的数据并获取一个对象数组作为响应
.sqlite 数据库将存储在应用程序沙箱文件夹中 检查这个sqlite storage
核心数据用于持久存储,但不是数据库(请解释)???。
Coredata 不是持久存储,它是持久存储管理器,正如我在上面所说,它处理所有繁重的工作,例如创建连接、执行查询、将结果转换为 NSManagedObject、跟踪对象更改、将其持久化到 SQLite 以及管理您的整个对象图加载到内存中
【讨论】:
谢谢 Ramesh...我的意思是问题 3 是...我们可以在文件中查看我们的数据而不像在 sqlite 数据库中那样获取我们使用 sqlite manager 来打开文件。 是的,应用程序数据确实存储在 .sqlite 文件中,它将位于 ~/Library/Application Support/iPhone Simulator/User/Applications/APP ID?/Library/Application Support/数据库(在模拟器中)检查此链接***.com/questions/24290989/…很难看到文件真实设备,因为您无法直接访问它但存储相同 还可以查看它,您可以在设备选项中从 xcode 下载容器,然后在设备中运行时显示包内容 但是你能告诉我项目导航器中.xcdatamodeld中XC的含义吗(是xcodedatamodeld)???【参考方案2】:很难将核心数据与 sqlite 进行比较,因为这是两种不同的技术。 然而,这里有一些你不会从开箱即用的 sqlite 中获得的东西。
内置更改跟踪和撤消支持。除了基本的文本编辑之外,Core Data 还提供内置的撤消和重做管理。
轻松集成 iCloud 存储(使用 NSManagedDocument
)
与应用程序控制器层的可选集成以支持用户界面同步。
例如:- Core Data 在 ios 上提供 NSFetchedResultsController
对象
完全、自动、支持键值编码和键值观察。
您可以通过将NSPredicate
对象与获取请求相关联来创建复杂查询,而不是编写 SQL。 NSPredicate
提供对基本函数、相关子查询和其他高级 SQL 的支持。借助 Core Data,它还支持正确的 Unicode、区域感知搜索、排序和正则表达式。
合并策略。 Core Data 提供内置的版本跟踪和乐观锁定来支持自动多写入器冲突解决。
Core Data 可以通过延迟加载对象来减少程序的内存开销。它还支持部分物化的future,以及copy-on-write数据共享。
【讨论】:
【参考方案3】:Core Data 是最好的选择,但如果您想以某种方式将应用程序移植到 android 或 windows 并希望保持代码相似,那么您可以选择 SQLITE,因为所有主要平台都支持 SQLite。而核心数据只是 iOS 的一部分。关于各种疑惑可以参考这个链接
Use Core Data or not?
【讨论】:
以上是关于我对核心数据有些困惑?的主要内容,如果未能解决你的问题,请参考以下文章