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

Strange things creating a new document-based Cocoa application on Xcode

我是 cocoa 开发新手。

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

  1. AppDelegate 几乎是空的,没有创建核心数据存储的代码,managedObjectContext,什么都没有。

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

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

1和3是Xcode的一堆废话还是我漏掉了什么?

你们能解释一下吗?谢谢。

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

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

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