gpt4 book ai didi

swift - 如何从 Cocoa 应用程序运行 Automator 工作流/服务?

转载 作者:可可西里 更新时间:2023-11-01 02:12:37 28 4
gpt4 key购买 nike

所以我尝试很好地学习 Swift 以在其中重新创建我的程序,但效果并不好,我也没有走得太远。尝试通过调用函数从 Obj-C++ 源代码运行我的 C++ 函数,但没有用,并且项目在我第一次关闭后拒绝再次打开。我一开始并没有发现面向对象的编程非常直观,所以我想避免使用 Obj-C。

我已经拥有一个 Automator 独立工作流程和一个服务(做同样的事情),它获取我需要的程序,显示确认,在带有标准输出的终端窗口中运行程序,并在退出前显示通知。这是按下特定按钮时我需要它做的所有事情。

那么我如何将此按钮链接到 Swift 中的 Automator func run() block ?我知道需要使用的命令,但就像我说的那样,我发现面向对象编程不是很直观,所以我需要知道使用该函数的上下文。以下 block 在实践中是否足够,还是需要更多规范?

@IBOutlet weak var testButton(NSButton!)
@IBAction testButton(_ sender: AnyObject)
{
let guard Bundle.main.path(forName: "test",forType:"workflow")
else
{
print("Could not find 'test.workflow'")
return
}
let URL="//location of file"
class func run(at: URL, withInput: nil)
}

我是不是遗漏了一些有关如何执行此操作的信息,或者以上是否足够?其次,有人可以举例说明文件位于“资源”文件夹中的文件 URL 的格式吗?class 还会保留单词 class 还是我应该指定一个自定义类?有人可以给我一个这个 block /概念在实践中的真实示例吗?

最佳答案

这是一个应该可以工作的 testButton 函数:

@IBAction func testButton(_ sender: AnyObject) {
guard let workflowPath = Bundle.main.path(forResource: "test", ofType: "workflow") else {
print("Workflow resource not found")
return
}

let workflowURL = URL(fileURLWithPath: workflowPath)
do {
try AMWorkflow.run(at:workflowURL, withInput: nil)
} catch {
print("Error running workflow: \(error)")
}
}

注意事项:

  1. 您需要在源文件的顶部导入 Automator,以便 Swift 编译器识别 AMWorkflow
  2. 您需要将 test.workflow 添加到您的项目中

关于swift - 如何从 Cocoa 应用程序运行 Automator 工作流/服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40554662/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com