(请参阅下面的EDIT2)
我在Swift 5中编写了一个macOS,除其他功能外,它还可以显示pdf文件。 现在,我希望能够通过下拉菜单打开pdf文件 打开方式->其他...-> MyApp 但是,当我选择一个PDF文件时,会出现一个错误消息框:
The document "my document.pdf" could not be opened.
MyApp cannot open files in the "PDF" format.
因此,我尝试在AppDelegate中添加以下方法
func application(_ sender: NSApplication, openFile filename: String) -> Bool {
Swift.print("\(filename)")
return true
}
并注册文档类型和导入的UTI(参见图)。我仍然收到相同的错误消息。我在做什么错了?
PS。声明文档类型和导入的UTI可能是多余的,但是我正在尝试一切。
编辑:我进步了一点。 清理并重建项目使MyApp出现在Finder的“打开方式”下拉菜单中,但仍然出现相同的错误消息。 要调用错误,我也可以使用终端命令
open -a /path/to/MyApp.app /path/to/a.pdf
我通过将名称或自变量中包含 open 的所有方法添加到AppDelegate中来进行了蛮力尝试,但是这些方法从未调用过,并且仍然出现相同的错误。 即,方法是:
func application(_ sender: NSApplication, openFile filename: String) -> Bool {
Swift.print("\(filename)")
return true
}
func application(_ application: NSApplication, open urls: [URL]) {
Swift.print("\(urls)")
}
func applicationOpenUntitledFile(_ sender: NSApplication) -> Bool {
return true
}
func application(_ sender: NSApplication, openFiles filenames: [String]) {
Swift.print("\(filenames)")
}
func application(_ sender: Any, openFileWithoutUI filename: String) -> Bool {
Swift.print("\(filename)")
return true
}
func application(_ sender: NSApplication, openTempFile filename: String) -> Bool {
Swift.print("\(filename)")
return true
}
func applicationShouldOpenUntitledFile(_ sender: NSApplication) -> Bool {
return true
}
EDIT2 : 我创建了一个新项目,即使不指定文档类型,上述代码也可以运行,并且此方法称为:
func application(_ application: NSApplication, open urls: [URL])
因此,我的项目中必须有一个设置或一段代码,以防止发生正确的行为。你有什么可能的想法吗?