我想在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 ...
有任何提示吗?先感谢您。
答案 0 :(得分:0)
关闭应用程序沙箱功能后,然后再次打开,它开始按预期运行。