在沙盒macOS应用程序的ApplicationScripts目录中创建文件

时间:2018-06-26 09:44:50

标签: swift macos security sandbox bookmarks

我想在macOS应用程序的应用程序脚本目录中创建一个(“ .scpt”)文件。

第一次启动应用程序时,我会显示一个NSOpenPanel,以获取存储在磁盘上的应用程序脚本目录的安全范围书签。

let data = try url.bookmarkData(options: .withSecurityScope, includingResourceValuesForKeys: nil, relativeTo: nil)
... // store to disk

检索...

var bookmark: Bookmark = ... // load from storage
var isStale = false
let url = try! URL.init(resolvingBookmarkData: bookmark.value, options: .withSecurityScope, relativeTo: nil, bookmarkDataIsStale: &isStale

...并且书签的用法似乎可行:url.startAccessingSecurityScopedResource()返回true

但是在该目录中创建文件失败:

let bundleUrl = Bundle.main.url(forResource: "foo", withExtension: "scpt")!
try! FileManager.default.copyItem(at: bundleUrl, to: url.appendingPathComponent("copyOfFoo.scpt"))

例外:

Operation not permitted

  

无法创建copyOfFoo.scpt ...无法复制,因为您无权访问“ com ...

有任何提示吗?先感谢您。

1 个答案:

答案 0 :(得分:0)

关闭应用程序沙箱功能后,然后再次打开,它开始按预期运行。