저는 다른 곳에서 다운로드 한 파일을 저장할 위치를 사용자에게 묻는 sandboxed Mac App Store 앱을 개발 중입니다.startAccessingSecurityScopedResource가 성공을 결코 돌려주지 않습니다.
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];
을
NSAserDefaults에 북마크 데이터가 저장되어있는 상태에서 NSApenPanel에서 ULR을 얻은 직후 나 나중에 실행하여 startAccessingSecurityScopedResource가 성공을 반환하지 않는다고 말하는 코드가 많습니다. 타이틀먼트 파일에서
, 다른 항목 사이에, 나는이 :이 코드와 아무 잘못이<key>com.apple.security.files.bookmarks.app-scope</key>
<true/>
있습니까?
콘솔 메시지가 표시됩니까? 또한 코드 서명을 다시 확인하여 올바르게 구성되었는지 확인하십시오. – gaige
예를 들어, 열린 패널이 끝난 후'urls' 배열이 어디에서 왔는지는 명확하지 않습니다. – gaige
오류 검사를 제거 할 때 URL을 가져 오는 행을 편집 할 수있었습니다. 나는 그것을 다시 돌려 놓았다. 콘솔에 startAccessingSecurityScopedResource를 호출하는 행과 관련된 메시지가 없습니다. –