在 Swift 基于文档的应用程序中重命名 Document 类

Posted

技术标签:

【中文标题】在 Swift 基于文档的应用程序中重命名 Document 类【英文标题】:Rename Document class in Swift document-based application 【发布时间】:2016-06-19 20:56:31 【问题描述】:

我正在使用 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 
[...]

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

【问题讨论】:

您好,您有任何代码可以发布以提供帮助吗? 在您的 Xcode 项目中搜索“文档”(整个单词,大小写匹配)。 谢谢你,成功了。如果其他人有同样的问题,将在下面添加一些细节。 【参考方案1】:

Willeke 上面关于搜索“文档”(整个单词,匹配大小写)的建议让我能够找到我需要做的事情。作为记录,我需要进入 Info.plist 并进入 Document types/Item 0(Document type)/Cocoa NSDocument Class ,并将“$(PRODUCT_MODULE_NAME).Document”更改为“$(PRODUCT_MODULE_NAME).Notebook”。

【讨论】:

这让我发疯了一个小时,谢谢你的提示。 刚刚从 Objective C 迁移到 Swift。 $(PRODUCT_MODULE_NAME).ClassName 对问题进行了排序!谢谢!

以上是关于在 Swift 基于文档的应用程序中重命名 Document 类的主要内容,如果未能解决你的问题,请参考以下文章

仅通过更改大小写在 Swift 中重命名文件会出现错误:没有这样的文件或目录

在 MonoTouch 中重命名命名空间

在 itunesconnect 中重命名应用程序 - 迁移数据?

Oracle查询语句中重命名的列在WHERE中无效?

如何在 SWIFT 中重绘我的视图?

升级期间在 Android Market 中重命名应用程序