使用除数据库之外的核心数据

时间:2016-08-25 09:19:49

标签: ios core-data frameworks

我是这个核心数据的新手。当我搜索教程时,我在互联网上的任何地方都看到核心数据不是数据库这句话。

  

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

     

最初创建Core Data的目的是什么?

     

在使用之前/将使用核心数据是否还有其他方式   未来(除了作为数据库)?

抱歉我的英文。

感谢您的时间..(:

3 个答案:

答案 0 :(得分:1)

实际上,Core Data是代码和底层数据库之间的桥梁(如SQLite或XML ......)。 Core Data不是数据库,而是使用SQLite(或XML ...)来实现持久性。 Core Data的主要目的是轻松管理内存对象和对象图,而无需通过SQLite库手动完成。可以在没有持久性的情况下使用Core Data(使用In-Memory存储)。

以下是文档:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/index.html#//apple_ref/doc/uid/TP40001075-CH2-SW1

再见!

答案 1 :(得分:1)

  

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

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

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

  

最初创建Core Data的目的是什么?

     

在将来使用核心数据之前是否还有其他方式使用(除了作为数据库)?

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

添加核心数据的目的是使设计和实施应用程序的模型层变得更加容易。您编辑设计数据的文档称为数据模型而不是架构,这绝非偶然。

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

  • 在Xcode中直观地设计您的数据模型
  • 创建和使用模型对象的实例
  • 在文件中读取并保存这些对象

...所有这些都不需要编写自己的代码来弄清楚如何将模型对象转换为可以写入文件的内容,或者使用打开文件,读取/写入文档的机制,并保存它。您只需根据需要创建对象,然后在save上致电NSManagedObjectContext。关于定位和打开文件的一小段代码在任何应用程序中几乎都是相同的,所以虽然它仍然需要它,但它大部分不再是应用程序开发人员的关注(在iOS 10中,{ {1}}甚至消除了这一点)。您还可以获得只需要加载当前所需的对象图形部分而不是每次都加载所有内容的好处。

正如您所注意到的,在实践中核心数据通常或多或少地像数据库一样使用,并且它适用于此。但它的设计并不仅限于此类用途。

答案 2 :(得分:0)

是的,核心数据不是数据库,但内部使用sqlite 保存数据。我们将Coredata 用于持久数据,这意味着我们应该能够保存数据并在关闭并重新打开应用程序后使用它。有多种方法可以存储数据,如 Sqlite,Plist,UserDefaults和CoreData Coredata没有像SQlite那样保持任何关系。这意味着没有像主要和外国等的密钥.Coredata允许您处理面向对象的方法中的数据。 即使您不了解数据库查询,也可以轻松处理数据操作。