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