Я использую следующий код для создания закладок с областью безопасности. Это работало отлично на 10.8 и 10.9, но перестало работать 10.10. Я в недоумении, что проверить?Замкнутая область безопасности перестала работать на Yosemite 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];
}
Я позволил право App Sandbox и добавил пособий com.apple.security.files.user-selected.read-записи и com.apple.security.files.bookmarks.app-Scope.
Вышеприведенное генерирует URL-адрес, но не относится к области безопасности. Так что, когда он регистрируется, это обычный путь к файлу, а не как ранее встречался с? а затем кучи персонажей.
Любая помощь или идеи оценили
Я видел поведение, которое вы описали в моем собственном приложении, но у URL-адресов все еще есть область безопасности (они могут предоставить доступ к файлу). Вы больше не видите маркер безопасности в строке запроса. Я нашел эту тему на форумах Apple Dev об этом: https://devforums.apple.com/message/1059959 – Dov
Это все еще не разрешено, но, похоже, это та же проблема, с которой вы связались. Огромное спасибо. –
Я решил это. Вышеприведенный код использовался для хранения закладки с областью безопасности в виде NSURL с использованием [[NSUserDefaults standardUserDefaults] setURL: url forKey: @ "basePath"]. Это работало отлично в 10.8 и 10.9, но больше не работает в 10.10. Если я сохраню данные закладок в качестве объекта данных, а затем извлечу их по мере необходимости и конвертирую в NSURL, тогда все будет отлично работать. –