首页 > 解决方案 > 无法在 Swift 中将文件传输/删除到 ~/Library/Application Scripts/

问题描述

我正在尝试将一组 AppleScript 文件复制到 ~/Library/Application Scripts/com.apple.test.MyApp-Runner/

let destinationURL = try! fileManager.url(
        for: FileManager.SearchPathDirectory.applicationScriptsDirectory,
        in: FileManager.SearchPathDomainMask.userDomainMask,
        appropriateFor:nil,
        create: true)
...

当我尝试执行此行时(如果目标中存在项目)

fileManager.replaceItem(at: destinationURL, withItemAt: theFileURL, backupItemName: nil, resultingItemURL: nil)

我得到一个错误

The file "AppleScript.scpt" couldn't be saved in the folder "com.apple.test.MyApp-Runner"

当我执行此操作时(如果目标中不存在项目)

fileManager.copyItem(at: theFileURL, to: destinationURL)

我得到一个错误

setting security information: Operation not permitted

是否允许 FileManager 写入 ~/Library/Application Scripts/?是否有我必须申请的权限设置?

编辑:另外,执行

fileManager.removeItem(at: theFileURLInApplicationScript)

抛出错误代码 513 “...无法删除,因为您无权访问它。”

标签: swiftmacosapplescriptxctest

解决方案


来自NSUserAppleScriptTask的文档

如果应用程序是沙盒的,那么脚本必须在FileManager.SearchPathDirectory.applicationScriptsDirectory文件夹中。沙盒应用程序可以读取但不能写入此文件夹。


推荐阅读