3

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

这是三个主要问题

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

1 回答 1

10

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

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

你可以从Document Based App Programming Guide for iOS中了解更多关于基于文档的架构,我推荐WWDC2011 Storing Documents in iCloud using iOS5 session video。我还推荐Stanford CS193P: iPad and iPhone App Development (Fall 2011) Lecture 13

  1. 调用时创建的是andsaveToURL:forSaveOperation:completionHandler:的实现细节,您不应该真正担心或依赖它。然而,在当前实现中,正在创建一个包含 sqlite 数据库文件的文件夹。UIManagedDocumentUIDocument

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

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

    您可以将托管对象上下文视为智能便签本。当您从持久存储中获取对象时,您会将临时副本带到便笺簿上,它们在此处形成对象图(或对象图的集合)。然后,您可以随意修改这些对象。但是,除非您实际保存这些更改,否则持久存储将保持不变。

但是,看看我在上面发布的讲座和其他材料,以大致了解所使用的技术以及它们在不同情况下对开发人员的潜在价值,确实是一个好主意。

于 2012-08-28T08:27:00.697 回答