通过拖放文件或文件夹来启动Swift OSX应用程序

3

我正在尝试弄清楚如何通过拖放文件或文件夹来启动OSX上的Swift应用程序,并将其作为参数处理所拖放资源的完整路径。

1个回答

5
首先,在项目导航器中选择您的项目(根节点),然后转到“信息”选项卡以声明您的应用程序支持的文件类型。它可以是“仅CSV文件”这样狭窄,也可以是“任何文件和文件夹”这样宽泛。

Target Info settings

接下来,在您的AppDelegate.swift文件中,添加application(_:openFile:)函数。
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    func application(_ sender: NSApplication, openFile filename: String) -> Bool {
        print("openning file \(filename)")

        // You must determine if filename points to a file or folder

        // Now do your things...

        // Return true if your app opened the file successfully, false otherwise
        return true
    }
}

在OS X中,文件类型由统一类型标识符(UTI)层次结构确定。例如,JPEG文件的UTI为public.jpeg,它是public.image的子分支,而public.image又是public.data的子分支,以此类推。有关更多信息,请参见Uniform Type Identifier OverviewSystem-Declared Uniform Type Identifiers
要查找文件或文件夹的UTI层次结构,请使用mdls
mdls -name kMDItemContentTypeTree /path/to/file_or_folder

嗨,我正在尝试实现类似的功能。但是对我来说它不起作用。https://stackoverflow.com/questions/58458717/how-to-make-my-macos-app-recognize-a-folder-as-a-file-it-can-open 如何使得当我双击一个文件夹(myfolder.extension)时,它会打开我的应用程序? - swift nub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接