核心数据使用UIManagedDocument创建的内容

Ter*_*son 3 xcode core-data objective-c nsurl uimanageddocument

我不确定coreData的结构以及如何将对象保存在目录中.所以我所知道的是你创建了一个UIManagedDocument的实例并为它创建一个URL以及它将保存文件的位置.那么你打电话给"SaveToURL",你打电话给它的确是什么?它是核心数据堆栈吗?然后,当您将信息保存到实体中时,您声明的是在实体中为每组信息在堆栈中创建的单独文件?最后,UIManagedDocument的上下文究竟是什么.

这是三个主要问题

  1. 调用"SaveToURL"时创建的是文档,文件还是堆栈?
  2. 在实体中保存信息时,是否在此文件/堆栈中创建了单独的文件?
  3. 什么是UIManagedDocument上下文?

sve*_*ena 10

我强烈建议您阅读Core Data Programming Guide并从Core Data Basics Chapter开始.

UIManagedDocument是一种特殊的文档,一个UIDocument子类,使用Core Data Framework存储其数据.因此它结合了文档架构和核心数据功能的强大功能.

你可以阅读更多关于基于文档的架构基于文档的应用程序编程指南适用于iOS和我推荐使用的iOS5 iCloud中WWDC2011存储文件会话视频.我还推荐Stanford CS193P:iPad和iPhone App Development(2011秋季)第13讲.

  1. 当你调用创建saveToURL:forSaveOperation:completionHandler:是的实现细节UIManagedDocumentUIDocument你不应该真正担心还是依赖于它.但是,在当前实现中,正在创建包含sqlite数据库文件的文件夹.

  2. 不可以.所有实体都将包含在单个数据库文件中,通常也称为持久性存储.可以使用多个持久性存储,但这些是更高级的用例,UIManagedDocument目前使用一个.

  3. UIManagedDocument的上下文是指NSManagedObjectContext来自底层核心数据框架的.UIManagedDocument实际上并行操作其中两个以将IO操作分离到后台线程.当涉及到上下文本身的性质时,这里引用了核心数据编程指南:

    您可以将托管对象上下文视为智能便笺簿.从持久性存储中获取对象时,将临时副本放在便笺簿上,它们形成对象图(或对象图的集合).然后,您可以根据需要修改这些对象.但是,除非您实际保存这些更改,否则持久存储仍保持不变.

但是,看看上面发布的讲座和其他材料以获得所用技术的总体情况以及它们作为开发人员在不同情况下的潜在价值,这是一个好主意.