在 Swift 基于文档的应用程序中重命名文档 class
Rename Document class in Swift document-based application
我正在 Swift 中使用 Xcode 为 OS X 构建一个新的基于文档的应用程序。我希望默认的 Document class 被称为不是 Document 的东西(在本例中为 Notebook),尽管它当然仍然是 subclass NSDocument(如果我使用 Core Data 则为 NSPersistentDocument)。我可以将其文件从 Document.swift 重命名为 Notebook.swift,但是一旦我将实际的 class 从文档重命名为笔记本,运行 应用程序会弹出错误警报 "No document could be created."控制台告诉我"The DocumentType type doesn't map to any NSDocumentClass."
所以,显然我必须做其他事情才能让文档架构在我重命名后识别我的 class。但是什么?我找到了 some directions on another site,但是当我使用 Swift 和故事板时,它们是旧的并且是为 Objective-C 和 XIB 编写的;我需要做的很可能完全不同。在 Swift 中,使用故事板重命名基于文档的应用程序的主文档 class 需要做什么?
编辑:下面有一个代码请求。基本上,默认的 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 {
[...]
}
它适用于顶部版本,不适用于底部版本。
Willeke 上面关于搜索 "Document"(整个单词,匹配大小写)的建议让我找到了我需要做的事情。作为记录,我需要进入 Info.plist 并转到 Document types/Item 0(Document type)/Cocoa NSDocument Class ,然后更改 "$(PRODUCT_MODULE_NAME).Document" 到 "$(PRODUCT_MODULE_NAME).Notebook".
我正在 Swift 中使用 Xcode 为 OS X 构建一个新的基于文档的应用程序。我希望默认的 Document class 被称为不是 Document 的东西(在本例中为 Notebook),尽管它当然仍然是 subclass NSDocument(如果我使用 Core Data 则为 NSPersistentDocument)。我可以将其文件从 Document.swift 重命名为 Notebook.swift,但是一旦我将实际的 class 从文档重命名为笔记本,运行 应用程序会弹出错误警报 "No document could be created."控制台告诉我"The DocumentType type doesn't map to any NSDocumentClass."
所以,显然我必须做其他事情才能让文档架构在我重命名后识别我的 class。但是什么?我找到了 some directions on another site,但是当我使用 Swift 和故事板时,它们是旧的并且是为 Objective-C 和 XIB 编写的;我需要做的很可能完全不同。在 Swift 中,使用故事板重命名基于文档的应用程序的主文档 class 需要做什么?
编辑:下面有一个代码请求。基本上,默认的 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 {
[...]
}
它适用于顶部版本,不适用于底部版本。
Willeke 上面关于搜索 "Document"(整个单词,匹配大小写)的建议让我找到了我需要做的事情。作为记录,我需要进入 Info.plist 并转到 Document types/Item 0(Document type)/Cocoa NSDocument Class ,然后更改 "$(PRODUCT_MODULE_NAME).Document" 到 "$(PRODUCT_MODULE_NAME).Notebook".