XML 文件未通过基于文档的 OSX 应用程序打开

Posted

技术标签:

【中文标题】XML 文件未通过基于文档的 OSX 应用程序打开【英文标题】:XML file is not getting opened through document-based OSX application 【发布时间】:2013-10-04 21:06:56 【问题描述】:

我刚刚创建了一个基于文档的 OSX 应用程序,其中包含核心数据支持。它的 plist 中已经预先设置了 3 种文档类型

但是,当我双击 xml 文件通过我的应用程序打开它时,它会显示这个窗口

有谁知道我的问题可能出在哪里?!

编辑澄清:

由于此文档类型已在 plist 中,我假设基于默认文档的应用程序无需对代码进行额外修改即可打开它们。 但是,当双击这种类型的文件时,(或将它们拖到文档中的应用程序图标中)会弹出上述错误。

提供的文档扩展似乎在基于文档的应用程序中不起作用,那么我需要做些什么来修复它?

【问题讨论】:

没人知道。第一,你不说你有什么样的应用程序。因此,有人想知道为什么需要使用 XML 文件类型?第 2 号,您不必费心发布代码来读取文件。因此,有人想知道“我到底知道什么?我不是通灵者。” 感谢您友好有用的建设性意见 @TBlue 他说这是一个基于 OSX 文档的应用程序。大概来自XCode提供的模板。 您不需要在基于文档的应用程序中实现application:openFiles:,并且将文档作为应用程序的委托是没有意义的。请编辑您的问题以包含您的 readFrom(Data|URL):ofType:error: 方法(即使它是模板给您的方法)。 是的,谢谢彼得,我真的想通了 【参考方案1】:

Peter Hosey 的回答是正确的,我必须实现 readFromURL:ofType:error: 方法才能让一切正常工作。

【讨论】:

所以没有一个阅读方法已经从模板中实现了?要检查的另一件事:您的文档子类是 NSDocument 或 NSPersistentDocument 的子类吗?我认为您不需要(或不应该)使用 NSPersistentDocument 实现通常的读写方法。 我的文档是 NSPersistentDocument 的子类,但是除了 init、windowNibName、windowControllerDidLoadNib 和 autosavesInPlace 之外,我没有在模板中看到任何实现的方法

以上是关于XML 文件未通过基于文档的 OSX 应用程序打开的主要内容,如果未能解决你的问题,请参考以下文章

iOS 和 OSX 文档包跨平台

获取在 OSX 上的应用程序中打开的文档的名称(python)

文件系统(02):基于SpringBoot框架,管理Xml和CSV

什么是XML文档?

如何解析XML文件

防止在 OS X 中启动时出现 iCloud 打开文件对话框 [重复]