在Swift基于文档的应用程序

时间:2016-06-19 20:56:31

标签: xcode swift macos cocoa nsdocument

我正在使用Xcode在Swift for OS X中构建一个基于文档的新应用程序。我希望默认的Document类被称为不是Document的东西(在本例中是Notebook),当然它仍然是子类NSDocument(如果我使用Core Data,则为NSPersistentDocument)。我可以将其文件从Document.swift重命名为Notebook.swift,但是一旦我将实际的类从Document重命名为Notebook,运行该应用程序会弹出错误警告“无法创建文档”。控制台告诉我“DocumentType类型不映射到任何NSDocumentClass。”

所以,显然我必须做其他事情才能使文档架构在重命名后识别我的类。但是什么?我找到了some directions on another site,但是当我使用Swift和故事板时,它们已经老了并且为Objective-C和XIB编写了;我需要做的可能是完全不同的。使用故事板在Swift中重命名基于文档的应用程序的主文档类需要做什么?

编辑:下面有一个代码请求。基本上,默认的Document.swift或Notebook.swift文件看起来像

import Cocoa

class Document: NSDocument {
... [standard code for Document class goes here, edited out for brevity]
}

我将其改为

import Cocoa

class Notebook: NSDocument {
[...]
}

它适用于顶部版本,不适用于底部版本。

1 个答案:

答案 0 :(得分:5)

Willeke建议上面搜索“文档”(整个单词,匹配案例)让我找到了我需要做的事情。为了记录,我需要进入Info.plist并转到文档类型/项目0(文档类型)/ Cocoa NSDocument类,并将“$(PRODUCT_MODULE_NAME).Document”更改为“$(PRODUCT_MODULE_NAME).Notebook”。< / p>