首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库以外核心数据的使用

数据库以外核心数据的使用
EN

Stack Overflow用户
提问于 2016-08-25 09:19:49
回答 3查看 538关注 0票数 0

我对这个核心数据很陌生。当我搜索教程时,我看到这句话:核心数据不是互联网上无处不在的数据库

如果它不是数据库,我们为什么要用它作为数据库呢? 最初创建核心数据的目的是什么? 在将来使用核心数据之前是否还有其他方式(DB除外)?

对不起我的英语。

谢谢你抽出时间..。(:

EN

回答 3

Stack Overflow用户

发布于 2016-08-25 09:36:38

实际上,核心数据是代码和底层数据库(比如SQLite或XML.)之间的桥梁。核心数据不是数据库,而是使用SQLite (或XML.)为了坚持。核心数据的主要目的是轻松地管理内存对象和对象图,而不必通过SQLite库手动完成。不需要持久化就可以使用Core数据(使用内存中的存储)。

以下是文档:ref/doc/uid/TP40001075-CH2-SW1

再见!

票数 1
EN

Stack Overflow用户

发布于 2016-08-26 19:12:22

如果它不是数据库,我们为什么要用它作为数据库呢?

“我们”并不一定这样做,这取决于你所说的“我们”指的是谁。核心数据可以以类似数据库的方式使用,请记住其他人已经注意到的核心数据与SQL差异。但这并不是唯一可能的用途。

关于Core数据不是数据库的声明主要是为了防止人们在SQL的意义上思考核心数据。这种想法会导致设计糟糕的数据模型,因为方法是不同的。它可以作为一般意义上的存储结构化数据的数据库使用,但重要的是不要假设它的工作方式与您可能使用过的其他数据库一样。

最初创建核心数据的目的是什么? 在将来使用核心数据之前是否还有其他方式(DB除外)?

创建核心数据是为了填补苹果框架中可能被视为缺失的部分。他们通常采用MVC方法。有一些类可以帮助设计和实现视图(在这些预iOS时代,这意味着AppKit)和控制器类(例如NSArrayController,也是OS类)。但是模型支持仅限于NSCoding,这需要大量的重复代码。自定义解决方案也难以扩展到大量数据--例如,NSCoding不能帮助您只加载大型文档图的一部分,因为它通过整个对象层次结构递归地工作。

增加了核心数据,以便更容易地设计和实现应用程序的模型层。为设计数据而编辑的文档称为数据模型,而不是模式,这不是偶然的。

这个想法是(而且是)你可以

  • 用Xcode可视化地设计数据模型
  • 创建和使用模型对象的实例
  • 读取并保存在文件中的对象

...all不需要编写自己的代码就可以知道如何将模型对象转换为可以写入文件的东西,或者使用打开文件、读写文件和保存文件的机制。您只需根据需要创建对象,然后在save上调用NSManagedObjectContext。与文件的定位和打开有关的少量代码在任何应用程序中几乎都是一样的,所以尽管仍然需要它,但它基本上不再是应用程序开发人员关心的问题(在iOS 10中,NSPersistentContainer甚至消除了这一点)。您还将受益于只需要加载当前需要的对象图中的部分,而不是每次加载所有内容。

正如您已经注意到的,在实践中通常使用核心数据或多或少地类似于数据库,而且它也适用于此。但它的设计并不局限于这样的用途。

票数 1
EN

Stack Overflow用户

发布于 2016-08-25 09:27:25

是真的,Core不是一个数据库,尽管在内部它使用sqlite保存数据。我们使用Coredata 作为持久数据,这意味着即使在关闭和重新打开应用程序之后,我们也应该能够保存数据并使用它。存储数据的方法有多种,如Sqlite、Plist、UserDefaults和CoreDataCoredata不维护任何像SQlite这样的关系。这意味着没有主键和外键等。Coredata允许您在面向对象的方法中处理数据。--您可以轻松地使用数据操作,即使您不了解DB查询、

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39141307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档