无法获取文件的应用程序范围书签 - OS X沙箱

KT_*_*KT_ 11 macos appstore-sandbox

我一直在寻找网络和苹果公司的帮助,以获得某种关于此的指导并且即将出现.我想知道是否有人遇到类似的情况,或者可能对某些(或不是)发生的事情有所了解.

我正在尝试为应用程序在以后的会话中调用的文件获取应用程序范围的书签.我可以确认在用户选择之后路径本身已正确添加到沙箱中,因为我可以在会话期间打开(并重新打开)它.

但是,尝试获取安全范围的书签以便以后访问它是行不通的.

这是我正在做的事情:

NSURL *url = [[NSURL alloc] initFileURLWithPath:path];
NSError *error = nil;
NSData *bookmarkData = [url
           bookmarkDataWithOptions:(1UL << 11) //NSURLBookmarkCreationWithSecurityScope
           includingResourceValuesForKeys:nil
           relativeToURL:nil
           error:&error];
[url release];
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用url字符串生成的内容path以及仅使用NSSavePanel的结果进行测试URL.(由于path遗留原因,该字符串是我希望能够使用的字符串.)

我不得不使用值bookmarkDataWithOptions而不是常量,因为出于其他遗留代码的原因,我不得不使用10.6 SDK进行编译NSURLBookmarkCreationWithSecurityScope.

我可以确认该路径指向有问题的文件为"/Users/me/Documents/document.ext",并且NSURL似乎正确初始化(或至少反映了相同的路径).

该应用程序包括权利com.apple.security.files.bookmarks.app-scope.

无论如何,这不起作用.该代码导致bookmarkData0x0和0x0的一个error,控制台显示:ScopedBookmarkAgent: Failed to retrieve app-scope key, aborting.

如果我改变relativeToURLurl代替nil和改变有权com.apple.security.files.bookmarks.document-scope,那么似乎正常工作-也就是说,bookmarkData至少得到一个非零值,并没有错误得到记录.但我很确定这不是我想要的(即文档范围书签).

有什么明显的东西我做错了吗?

KT_*_*KT_ 10

对我永远的耻辱,这是我的错.

不知何故,在将项目移动到另一台机器进行测试和调试时,开发构建的代码签名被关闭了.

显然这会导致事情(几乎)无声地失败,没有错误代码,只有控制台中有一个神秘的消息,没有其他迹象表明其他任何东西都无法正常工作.

把这个留在这里以防其他人错误地做同样的事情.