奇怪的是在Xcode上创建一个基于文档的新Cocoa应用程序

时间:2015-02-13 08:58:02

标签: xcode macos cocoa core-data nsdocument

我是可可开发的新手。

我刚刚第一次创建了一个使用核心数据的新文档类型应用程序,并注意到一些奇怪的事情。

  1. AppDelegate实际上是空的,没有代码可以创建核心数据存储,managedObjectContext,没有。

  2. 添加了两个文件:Document.mDocument.h我理解的是处理应用程序将创建的文档的模型。

  3. 即使没有可见的核心数据初始化代码,Xcode也创建了一个.xddatamodeld文件,这是一个奇怪的部分:Xcode将文件命名为Document.xcdatamodeld。通常,Xcode会使用与项目相同的名称命名。通过命名Document,就像说这个模型与Document.mDocument.h有关。

  4. 1和3是来自Xcode的一堆废话,还是我错过了什么?

    你能解释一下吗?感谢。

1 个答案:

答案 0 :(得分:1)

对您的问题的简短回答:您所看到的行为是由您创建基于文档的应用程序引起的。如果您创建了一个鞋盒(非基于文档的)应用程序,您会看到不同的行为。

关于问题1,在创建新文档时,NSPersistentDocument会为文档创建Core Data存储和托管对象上下文。每个文档都有自己的Core Data存储和托管对象上下文。在AppDelegate中创建商店和托管对象上下文适用于鞋盒应用程序,因为鞋盒应用程序具有整个应用程序的一组数据。但是在AppDelegate中创建商店和托管对象上下文对于基于文档的应用程序没有意义,因为可以打开多个文档,每个文档都有自己的存储和托管对象上下文。

关于问题3,数据模型具有文档的名称,因为基于文档的应用程序创建文档。假设您正在创建一个文档名称为Screenplay的编剧应用程序。当您选择文件>在应用程序的新功能中,您将创建新的剧本,而不是应用程序的新实例。这就是为什么数据模型具有文档的名称,而不是应用程序的名称。