2

Я использую следующий код для создания закладок с областью безопасности. Это работало отлично на 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-адрес, но не относится к области безопасности. Так что, когда он регистрируется, это обычный путь к файлу, а не как ранее встречался с? а затем кучи персонажей.

Любая помощь или идеи оценили

+0

Я видел поведение, которое вы описали в моем собственном приложении, но у URL-адресов все еще есть область безопасности (они могут предоставить доступ к файлу). Вы больше не видите маркер безопасности в строке запроса. Я нашел эту тему на форумах Apple Dev об этом: https://devforums.apple.com/message/1059959 – Dov

+0

Это все еще не разрешено, но, похоже, это та же проблема, с которой вы связались. Огромное спасибо. –

+0

Я решил это. Вышеприведенный код использовался для хранения закладки с областью безопасности в виде NSURL с использованием [[NSUserDefaults standardUserDefaults] setURL: url forKey: @ "basePath"]. Это работало отлично в 10.8 и 10.9, но больше не работает в 10.10. Если я сохраню данные закладок в качестве объекта данных, а затем извлечу их по мере необходимости и конвертирую в NSURL, тогда все будет отлично работать. –

ответ

2

я решил это. Вышеприведенный код использовался для хранения закладки с областью безопасности в виде NSURL с использованием [[NSUserDefaults standardUserDefaults] setURL:url forKey:@"basePath"]. Это работало отлично в 10.8 и 10.9, но больше не работает в 10.10. Если я сохраню данные закладок в качестве объекта данных, а затем извлечу их по мере необходимости и конвертирую в NSURL, тогда все будет отлично работать.