startAccessingSecurityScopedResource никогда не возвращает успех

Я разрабатываю изолированное приложение Mac App Store, которое спрашивает пользователя, где сохранять файлы, которые он загружает из других источников. У меня есть этот код, чтобы получить папку от пользователя (удалив некоторую проверку ошибок):

NSOpenPanel* openPanel = [NSOpenPanel openPanel];
[openPanel setAllowsMultipleSelection:NO];
[openPanel setCanChooseDirectories:YES];
[openPanel setResolvesAliases:YES];
NSInteger result = [openPanel runModal];
NSArray* urls = [openPanel URLs];
NSURL* folderURL = [urls objectAtIndex:0];
NSError* error;
NSData* bookmakeData = [folderURL bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope
                           includingResourceValuesForKeys:nil
                                            relativeToURL:nil
                                                    error:&error];
_saveFolderBookmark = bookmakeData;

и когда приходит время переместить файл в эту папку, у меня есть этот код:

BOOL isStale;
NSError* error;
NSURL* saveFolder = [NSURL URLByResolvingBookmarkData:_saveFolderBookmark
                                              options:NSURLBookmarkCreationWithSecurityScope
                                        relativeToURL:nil
                                  bookmarkDataIsStale:&isStale
                                                error:&error];
BOOL success = [saveFolder startAccessingSecurityScopedResource];

// Move the file somewhere else
NSWorkspace* workspace = [NSWorkspace sharedWorkspace];
NSInteger operationTag;
BOOL copied = [workspace performFileOperation:NSWorkspaceMoveOperation
                                       source:[[self getDocumentsFolder] path]
                                  destination:[saveFolder path]
                                        files:[NSArray arrayWithObject:filename]
                                          tag:&operationTag];
[saveFolder stopAccessingSecurityScopedResource];

Это много кода для list, чтобы сказать, что startAccessingSecurityScopedResource никогда не возвращает мне успех, либо сразу после получения ULR из NSOpenPanel, либо при более позднем запуске с сохранением данных закладок в NSUserDefaults.

В файле прав, среди прочего, у меня есть:

<key>com.apple.security.files.bookmarks.app-scope</key>
<true/>

Что-то не так с этим кодом?

6
задан Gary Makin 5 June 2012 в 14:38
поделиться

0 ответов