在 Swift 中加载具有安全范围的 URLBookmark

问题描述 投票:0回答:1

在沙盒应用程序中,我使用

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

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

然后

onAppear
:

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=NSCocoaErrorDomain Code=259“无法打开该文件,因为它的格式不正确。”

如果我删除

.withSecurityScope
,它似乎工作正常。发生什么事了?

swift macos
1个回答
0
投票

您没有使用

.withSecurityScope
选项创建书签。您需要结合
.securityScopeAllowOnlyReadAccess

来做到这一点
© www.soinside.com 2019 - 2024. All rights reserved.