通过拖放文件或文件夹来启动 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拖放操场:将dragndrop.swift抛出到共享源中,然后测试单个playgro中的示例
如何从 OSX Swift 命令行工具或 shebang 脚本文件显示窗口?
没有使用 Swift 的故事板或 xib 文件的 OSX 应用程序