我試圖構建從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 :-(文件訪問 –