我正在使用基于文档的安全范围书签来存储对文档中文件的引用。我像这样创建它们:
_bookmark = [_url bookmarkDataWithOptions: NSURLBookmarkCreationWithSecurityScope
includingResourceValuesForKeys: nil
relativeToURL: relativeURL
error: error];
relativeURL
包含将存储书签的文档的 URL 。
我稍后使用以下方法解析书签:
resolvedURL = [NSURL URLByResolvingBookmarkData: bookmark
options: NSURLBookmarkResolutionWithoutMounting | NSURLBookmarkResolutionWithSecurityScope
relativeToURL: url
bookmarkDataIsStale: &isStale
error: error];
只要文档和引用的文件保留在初始机器上,这就会起作用。然后我可以移动并重命名它们,它们会继续工作。
另一方面,如果我压缩包含文档和文件的文件夹,并将它们解压缩到另一台机器上,则书签无法解析。
出现的错误是code 4: File doesn't exist.
我验证文档仍然包含其安全范围属性并且确实如此。当然,文档和引用的文件实际上都存在。
我尝试从相对 URL 创建书签数据,但这并没有改变任何东西。从书签请求 URL 总是显示一个绝对 URL。
当文档和文件传输到另一台机器时,如何确保书签解析?
更新
苹果已经确认了这个问题。它在radar: 24126953
. 不幸的是,有人告诉我,他们内部不同意是否应该解决这个问题。我希望他们有一天会。