我使用基于文档的安全范围书签来存储对文档中文件的引用。 我这样创建它们:
_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。
如何在文档和文件传输到另一台计算机时确保书签解析?
更新
此问题已得到Apple的确认。它是在radar: 24126953
下跟踪的。不幸的是,我被告知他们内部不同意这是否应该得到修复。我希望他们有一天会。