将文档移动到另一台计算机后,安全范围的书签无法解决

时间:2015-12-15 11:10:54

标签: macos cocoa sandbox security-scoped-bookmarks

我使用基于文档的安全范围书签来存储对文档中文件的引用。 我这样创建它们:

_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下跟踪的。不幸的是,我被告知他们内部不同意这是否应该得到修复。我希望他们有一天会。

0 个答案:

没有答案