2
我正在使用以下代码来生成安全范围的书签。这在10.8和10.9上运行正常,但在10.10停止工作。我不知道要检查什么?安全范围书签在优胜美地停止工作10.10
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setAllowsMultipleSelection:NO];
[panel setCanChooseDirectories:YES];
[panel setCanChooseFiles:NO];
[panel setResolvesAliases:YES];
[panel setCanCreateDirectories:YES];
[panel setTitle:@"Choose a directory as your input folder"];
[panel setPrompt:@"Choose"];
NSInteger result = [panel runModal];
if (result == NSFileHandlingPanelOKButton){
NSURL *urlPath = [[panel URLs] objectAtIndex:0];
NSError *error = nil;
NSData *bookmark = nil;
bookmark = [urlPath bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope
includingResourceValuesForKeys:nil
relativeToURL:nil
error:&error];
if (error) {
[NSApp presentError:error];
}
BOOL bookmarkDataIsStale;
NSURL *url = [NSURL URLByResolvingBookmarkData: bookmark
options:NSURLBookmarkResolutionWithSecurityScope
relativeToURL:nil
bookmarkDataIsStale:&bookmarkDataIsStale error:nil];
}
我已经启用了应用程序沙箱的权利,并且增加了com.apple.security.files.user-selected.read写入和com.apple.security.files.bookmarks.app范围的权利。
以上是生成的URL,但它不是安全范围。所以当它被记录时它是通常的文件路径,而不是以前发生的?然后再堆积字符。
任何帮助或意见赞赏
我已经看到你在我自己的应用程序中描述的行为,但这些URL仍然具有安全范围(他们可以授予对该文件的访问权限)。您再也看不到查询字符串中的安全令牌。我在Apple Dev论坛上发现了这个主题:https://devforums.apple.com/message/1059959 – Dov 2014-11-07 18:43:35
这仍然没有解决,但似乎与您链接到的问题相同。非常感谢。 – 2014-11-19 11:48:03
我已经解决了这个问题。上述代码用于使用[[NSUserDefaults standardUserDefaults] setURL:url forKey:@“basePath”]将安全范围书签存储为NSURL。这在10.8和10.9中运行正常,但不再在10.10中运行。如果我将书签数据保存为数据对象,然后根据需要检索它并将其转换为NSURL,则所有工作都会正常工作。 – 2014-11-21 10:57:07