gpt4 book ai didi

macos - 如何在 NSDocument 加载之前拦截 openDocument 的结果?

转载 作者:行者123 更新时间:2023-12-03 17:34:13 26 4
gpt4 key购买 nike

我正在编写一个程序来加载和处理 XML 数据。如果 XML 文件包含单个 XML“字典”,那么它将需要打开一个 NSDocument 窗口(到目前为止,一切都很好 - 我可以做到这一点!),但是如果 XML 文件包含一个字典数组,那么它应该打开一个列表窗口,可以在其中将各个词典打开到 NSDocument 中。

因为 File->Open 在文档窗口打开之前向 First Responder->openDocument 发送一个操作,所以我认为 openDocument 函数不是 NSDocument 的一部分。因此,我希望能够在将 open 函数交给 NSDocument 之前拦截它 - 只是为了检查该文档是否是我想要作为文档而不是作为我的整洁 ListView 打开的文档。

另一方面,如果 openDocument 是一个 NSDocument 函数,那么在这种情况下,我怎样才能悄悄地关闭 NSDocument 窗口并将 XML 列表传递到我的列表窗口而不引发错误?当然,我不想完全抑制错误 - 因为可能有合理的理由引发错误(不可读的文件、错误的语法等)

我意识到我想做的事情有点不正统 - 但希望它是可能的。有什么想法吗?

最佳答案

openDocument:是NSDocumentController的实例方法。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSDocumentController_Class/Reference/Reference.html#//apple_ref/doc/uid/20000030-openDocument_

您可以使用您自己的 NSDocumentController 子类。这将允许您拦截 openDocument:。

如果您想在创建文档之前检查文件,则需要使用 NSOpenPanel 作为打开文件对话框。然后在要创建文档时调用 openDocumentWithContentsOfURL:display:completionHandler: 。如果您不想创建文档,则可以触发您想要执行的任何操作。

关于macos - 如何在 NSDocument 加载之前拦截 openDocument 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18226859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com