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

Posted

技术标签:

【中文标题】通过拖放文件或文件夹来启动 Swift OSX 应用程序【英文标题】:Launch a Swift OSX app by dragging and dropping a file or folder on it 【发布时间】:2017-06-07 09:30:48 【问题描述】:

我试图弄清楚如何通过拖放文件或文件夹在 OSX 上启动 Swift 应用程序,并让它将删除资源的完整路径视为参数。

【问题讨论】:

【参考方案1】:

首先,在 Project Navigator(根节点)中选择您的项目,然后转到 Info 选项卡以声明您的应用支持的文件类型。它可以像“仅 CSV 文件”一样窄,也可以像“任何文件和文件夹”一样宽:

接下来,在您的 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.data的子分支等。更多信息请参见Uniform Type Identifier Overview和System-Declared Uniform Type Identifiers。

要找出文件或文件夹的 UTI 层次结构,请使用 mdls

mdls -name kMDItemContentTypeTree /path/to/file_or_folder

【讨论】:

嗨,我正在尝试实现类似的目标。但这对我不起作用。 ***.com/questions/58458717/…我如何做到这样当我双击一个文件夹(myfolder.extension)时它会打开我的应用程序?

以上是关于通过拖放文件或文件夹来启动 Swift OSX 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Swift OSX NSImageView 拖放

swift 构建OSX拖放操场:将dragndrop.swift抛出到共享源中,然后测试单个playgro中的示例

如何从 OSX Swift 命令行工具或 shebang 脚本文件显示窗口?

没有使用 Swift 的故事板或 xib 文件的 OSX 应用程序

没有使用 Swift 的故事板或 xib 文件的 OSX 应用程序

通过 XPC 或 MACH 在 OSX 上启动服务