我正在编写一个程序来加载和处理XML数据。如果XML文件包含单个XML'Dictionary',那么它将需要打开一个NSDocument窗口(到目前为止,这很好 - 我可以这样做!),但是如果XML文件包含一个Dictionaries数组,那么它应该打开一个列表窗口,可以从中打开单个词典到NSDocument。
因为文件 - >打开会在文档窗口打开之前向 First Responder-> openDocument 发送操作,我认为openDocument函数不是NSDocument的一部分。因此,我希望能够在它切换到NSDocument之前拦截open函数 - 只是为了检查文档是否是我想要作为文档而不是作为我的natty列表视图打开的文档。
另一方面,如果openDocument是一个NSDocument函数,我怎样才能静静地关闭NSDocument窗口并将XML列表交给我的列表窗口,而不会在这种情况下引发错误?当然,我不想完全压制错误 - 因为可能有合理的理由提出错误(不可读的文件,错误的语法等)
我意识到我正在努力做的事情有点不正统 - 但希望它有可能。有什么想法吗?
答案 0 :(得分:3)
openDocument:是NSDocumentController的实例方法。
您可以使用自己的子类化NSDocumentController。这将允许您拦截openDocument:。
如果要在创建文档之前检查文件,则需要使用NSOpenPanel作为打开文件对话框。然后调用openDocumentWithContentsOfURL:display:completionHandler:当你想要创建文档时。如果您不想创建文档,则可以触发您想要执行的任何操作。
答案 1 :(得分:0)
只需添加一个函数即可将openDocument处理到您的app delegate
func openDocument(sender: AnyObject) {
print("openDocument got called")
}
运行app并按cmd + o