我试图构建从applicationScriptsDirectory运行Apple脚本的应用程序(在Apple Sandbox中)。如果目录存在一切都很好。但是,如果我删除此目录 - 我的应用程序无法手动创建它(没有权限在应用程序脚本中创建文件夹)。Swift 3 +沙盒 - 如何创建applicationScriptsDirectory如果它不存在
有什么办法自动创建该默认文件夹?
我试图构建从applicationScriptsDirectory运行Apple脚本的应用程序(在Apple Sandbox中)。如果目录存在一切都很好。但是,如果我删除此目录 - 我的应用程序无法手动创建它(没有权限在应用程序脚本中创建文件夹)。Swift 3 +沙盒 - 如何创建applicationScriptsDirectory如果它不存在
有什么办法自动创建该默认文件夹?
沙盒应用程序有权创建其应用程序脚本目录。
FileManager
的方法url(for:in:appropriateFor:create:)
检索URL并在必要时创建目录。
let fileManager = FileManager.default
let scriptsFolderURL = try! fileManager.url(for: .applicationScriptsDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
我那是不可能的MacOS 10.12下创建的文件夹Application Scripts
的感觉,但它工作在10.11。虽然以前有可能创建捆绑脚本目录并复制其中的文件,但它不适用于沙盒应用程序,也许Apple现在为此添加了限制。
它不是完美的,但似乎工作:
lazy var scriptsFolderURL: URL = {
let manager = FileManager.default
var scriptsFolder: URL!
do {
scriptsFolder = try manager.url(for: .applicationScriptsDirectory, in: FileManager.SearchPathDomainMask.userDomainMask, appropriateFor: nil, create: true)
} catch {
scriptsFolder = manager.urls(for: .applicationScriptsDirectory, in: .userDomainMask).first!
}
return scriptsFolder
}()
当我试图运行你的例子我有一个致命的错误:**致命错误:“尝试”表达式意外地引发了一个错误:错误域= NSCocoaErrorDomain代码= 513“您没有权限保存文件** –
奇怪我使用应用程序脚本文件夹创建了两个项目没有任何问题您是否更改了父项的权限文件夹(下面的应用沙箱):用户选择的文件读/写(我的文件夹(在应用程序沙箱下面):我应该是'你:工作人员700' – vadian
权限看起来很好:755 iam:staff :-(文件访问 –