【发布时间】:2018-11-08 18:53:22
【问题描述】:
谁能解释一下它们之间的技术区别是什么。什么 我知道核心数据是 SQLite 的包装器,在内部它是 使用 SQLite。
如果核心数据内部使用 SQLite 那么核心数据如何更快 SQLite 以及为什么我们在大多数应用程序中都使用核心数据?
请结合相关例子进行说明。
【问题讨论】:
谁能解释一下它们之间的技术区别是什么。什么 我知道核心数据是 SQLite 的包装器,在内部它是 使用 SQLite。
如果核心数据内部使用 SQLite 那么核心数据如何更快 SQLite 以及为什么我们在大多数应用程序中都使用核心数据?
请结合相关例子进行说明。
【问题讨论】:
SQLite 是一个数据库。它从根本上将数据存储为类似数据的表格,这些表格被分成几行单独的数据项。
CoreData 是一个对象存储。它存储了许多对象的任意图以及它们之间的连接。它使用 SQLite 是其实际功能的辅助,它可以(并且确实)将该图轻松地存储在 XML 文件、属性列表文件或其他任意数据格式中。
至于为什么使用 CoreData 而不是 SQLite,主要是为了简单。使用 SQLite,您必须处理从表中读取行并重建各个有用对象的问题。使用 CoreData,这一切都为您透明地处理,以及许多其他问题,例如线程间同步和迁移(从版本到版本的更改)。
【讨论】:
CoreData,每个都有其复杂性。 CoreData 以线程一致性为中心,他们做了很多工作以使其更易于使用。
NSKeyedArchiver 直接转到XML 的选项。我现在正在迁移到 NSCoder/XML/GZIP,我已经受够了 SQLite 和 CoreData。