Проблемы с созданием закладок с защитой

Я конвертирую свое приложение Lion в «песочницу» приложения. Я пытаюсь использоватьзакладки в области безопасности функция, представленная в 10.7.3, для обеспечения постоянного доступа к папке. Приведенный ниже код возвращает нулевую закладку и создает следующее сообщение журнала:XPC couldn't look up the Mach service for scoped bookmarks agent.

Я установилUser Selected File Access право наRead/Write Access, а также пробовал с и без окружающих..AccessingSecurityScopedResource звонки.

Я думаю, что я делаю все правильно в соответствии с документацией, поэтому я буду признателен за любые указания. Код работал, чтобы получить простой URL, прежде чем я начал песочницу приложения.

<code>NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel setCanChooseFiles:NO];
[openPanel setCanChooseDirectories:YES];
[openPanel setAllowsMultipleSelection:NO];

NSInteger result = [openPanel runModal];

if( result == NSFileHandlingPanelCancelButton ) {
    return;
}

NSArray *urls = [openPanel URLs];

if( urls != nil && [urls count] == 1 ) {
    NSURL *url = [urls objectAtIndex:0];

    NSData *bookmark = nil;
    NSError *error = nil;
    bookmark = [url bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope
             includingResourceValuesForKeys:nil
                              relativeToURL:nil // Make it app-scoped
                                      error:&error];
    if (error) {
        NSLog(@"Error creating bookmark for URL (%@): %@", url, error);
        [NSApp presentError:error];
    }

    NSLog(@"bookmark: %@", bookmark);
}
</code>

Update (x3)

Теперь, когда у меня все получилось, я могу убедиться, что звонки на-startAccessingSecurityScopedResource а также-stopAccessingSecurityScopedResource в приведенном выше коде нет необходимости, поскольку Powerbox предоставляет доступ к ресурсу после того, как пользователь выберет его вNSOpenPanel.

Если вы создаете закладку из другого URL-адреса, относящегося к области безопасности, например, делаете закладку в области документа из закладки в области приложения, созданной в другом сеансе приложения, то сначала вам нужно получить доступ к файлу.

Ответы на вопрос(1)

Ваш ответ на вопрос