Swift 4 LaunchedProcess 启动路径不可访问

标签 swift xcode swift4 xcode9

我正在 Xcode 9 中编写一个基于 swift 的 macOS 应用程序,以便在我的计算机上使用(未分发)。我在/usr/local/bin 中安装了 EXIFtool(独立于应用程序),并且可以从终端应用程序成功使用它。我正在尝试从我的应用程序访问 EXIFtool。

我的应用程序有一个按钮,单击该按钮后应通过执行此脚本来运行 EXIFtool 命令。

@IBAction func arrowClicked(_ sender: Any) {
    arrow.isEnabled = false
    let task = Process.launchedProcess(launchPath: "/usr/local/bin/exiftool", arguments: [rawURL])
    task.waitUntilExit()
    arrow.isEnabled = true
}

脚本失败并出现“启动路径不可访问”错误。我输入什么作为参数并不重要(在上面的代码片段中,rawURL 是一个字符串,其中包含用户识别的图像文件的路径。

我在这里找到的类似问题的答案主要关注路径的格式(例如,必须是完整路径,以/开头等)。我的启动路径来自终端对“which exiftool”的响应,所以我认为它是正确的。


更新:我按照 Matt 提供的链接重写了代码以利用 shell 脚本。我使脚本可执行并通过终端和 TextWrangler 成功运行它。但在 Xcode 中访问它会导致“操作不允许”消息。

最佳答案

关闭应用程序沙箱可以解决原始的“启动路径无法访问”消息和修改后的尝试的“不允许操作”消息。

关于Swift 4 LaunchedProcess 启动路径不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47100274/

相关文章:

Xcode 插件模板 cocoapods

ios - react-native run-ios 不断失败

ios - 返回 App 时如何读取设置包?

ios - 保持 WKWebView 及其 UIViewController 在后台运行并可从多个 ViewController 访问

ios - 如何为 UICollectionViewCell 设置不同的填充大小

ios - IOS 13 上的后台任务(BGTaskScheduler)

Swift:从 MainBundle 读取 plist 并直接写入 Documents 失败

iphone - 网页 View 在 Safari 中使用某些关键字打开链接

ios - 无法在 WKWebView Swift 4 中加载本地 html 文件

ios - 快速引用数组的通用变量