在Swift中加载具有安全作用域的URL书签

在Swift中加载具有安全作用域的URL书签,swift,macos,Swift,Macos,在沙盒应用程序中,我使用NSOpenPanel让用户选择源文件夹。然后,我保存一个书签,以便下次应用程序加载时重复使用,如下所示: let defaults = UserDefaults.standard let bookmark = try! url.bookmarkData(options: .securityScopeAllowOnlyReadAccess) defaults.set(bookmark, forKey: "sourceFolder") 然后,on出现: if let bo

在沙盒应用程序中,我使用
NSOpenPanel
让用户选择源文件夹。然后,我保存一个书签,以便下次应用程序加载时重复使用,如下所示:

let defaults = UserDefaults.standard
let bookmark = try! url.bookmarkData(options: .securityScopeAllowOnlyReadAccess)
defaults.set(bookmark, forKey: "sourceFolder")
然后,
on出现

if let bookmarkData = defaults.data(forKey: "sourceFolder") {
print(bookmarkData) // 808 bytes
var stale = false
let savedCurrentDirectory = try! URL(resolvingBookmarkData: bookmarkData, options: .withSecurityScope, relativeTo: nil, bookmarkDataIsStale: &stale)
但这在以下方面失败:

致命错误:“尝试!”表达式意外引发错误:error Domain=nscocaerordomain Code=259“无法打开该文件,因为它的格式不正确。”

如果我用Security Scope移除
,它似乎可以正常工作。发生什么事了