2013-07-29 1 views
13

내 코코아 앱에서 간단한 파일 열기 패널을 만들고 있습니다. 자격 및 앱 샌드 박싱을 활성화합니다. 그러나 응용 프로그램이 NSOpenPanel를 사용하여 대화 상자를 열어야 할 때 OS X 10.9에, 그것과 충돌 :샌드 박스 응용 프로그램 및 NSOpenPanel로 인해 충돌이 발생합니다.

응용 프로그램 특정 정보 : 응용 프로그램을 종료
인해 캐치되지 않는 예외 'NSObjectNotAvailableException'에, 이유는 '서비스 com.apple .appkit.xpc.openAndSavePanelService가 { "proxy-communications-error"= "오류 도메인 = NSCocoaErrorDomain 코드 = 4099" "\ U041d \ U0435 \ U0443 \ U0434 \ U0430 \ U043b로 인해 NSOpenPanelService 인스턴스를 초기화하지 못했습니다. U0443 \ U0443 \ U0443 \ U0443 \ U0441 \ U0442 \ U0430 \ U043 \ U043 \ U0432 \ U0438 \ U0442 \ U044C \ U0441 \ U0432 \ U044F \ U0437 \ U044C \ U0441 \ U043F \ U0440 \ U043e \ U0433 \ U0440 \ U0430 \ U043c \ U043c \ U043e \ U0439- \ U043f \ U043e \ U043c \ U043e \ U0449 \ U043d \ U0438 \ U043a \ U043e \ U043c. \ "(연결이이 프로세스에서 무효화되었습니다.) UserInfo = 0x61000047dc00 {NSDebugDescription = 연결이이 프로세스에서 무효화되었습니다.}"; } '

자료 :

self.panel = [NSOpenPanel openPanel]; 
panel.delegate = self; 
panel.canChooseDirectories = YES; 
panel.canChooseFiles = NO; 
panel.canCreateDirectories = YES; 
panel.allowsMultipleSelection = NO; 
[self.panel beginSheetModalForWindow:contextWindow completionHandler:^(NSInteger returnCode) { 
     ... 
    }]; 

사람이 전에 본 적이 있습니까?

+0

당신이 이제까지이 알아낼나요이 오류 – Beryllium

+0

를 생성하는 코드를 추가주십시오

dispatch_async(dispatch_get_main_queue(), ^{ NSSavePanel *saveAsPanel = [[NSSavePanel alloc] init]; // ... bla bla... }); 

내에서 모든 것을 해결 캡슐화? 나는 똑같은 문제를 겪고있다. – robertmiles3

답변

3

앱 자격에서 "사용자가 선택한 파일"을 활성화해야한다고 생각합니다!

xcode 5 베타 버전에서 시도해보십시오. xcode에서 4는 자격 부여를 활성화하는 프로젝트의 일반 페이지에 있어야합니다!

알려주세요.

는 --------- 편집

글쎄, 난 당신의 문제는 당신이 패널 호출 방법으로 생각합니다.

[self.panel beginSheetModalForWindow:contextWindow completionHandler:^(NSInteger returnCode) { ... }]; 

에 :

NSOpenPanel * openDlg = [NSOpenPanel openPanel]; 

[openDlg setCanChooseFiles:NO]; 
[openDlg setAllowsMultipleSelection:NO]; 
[openDlg setCanChooseDirectories:YES]; 
[openDlg setCanCreateDirectories:YES]; 
마지막

에서 대화 "전화"로 변경 : 먼저

와 패널을 초기화

if ([openDlg runModal] == NSOKButton) 
{ here you manage the user choice. } 

이제 작동합니다!

+0

** "com.apple.security.files.user-selected.read-write"** 자격을 지정합니다. OS X 10.9에서만 충돌합니다. – VKorsun

+0

나는 내 대답을 편집했습니다. 친구를 확인하십시오! – Benz

0

내 OS X 앱 "Make a Face"는 간단한 파일 열기 패널을 호출 할 때 문제가 있습니다. 응용 프로그램이 충돌하지 않지만 "열 파일 선택"창이 흐려지면서 대화 상자의 픽셀 표시등이 고동 치고 마우스 클릭이 20 ~ 40 초 사이의 어느 곳에서나 지연된 영향을줍니다. 매우 초현실적 인. 이것은 매버릭스 10.9에서만 발생합니다.

이전에 업로드 한 모든 응용 프로그램에 대한 샌드 박스 자격 "com.apple.security.files.user-selected.read-write"가 활성화되었습니다. 그러나 매버릭스 (Mavericks)에 따르면 '욱신 거리는 가벼운 파일 열기 패널 증후군'은 앱에서 JPEG 또는 PNG 파일을 선택한 사용자가 매우 울퉁불퉁 한 상태로 열도록 만듭니다.

+0

혹시 이것에 대한 해결책을 찾았습니까? –

+0

나는 이것도보고있다. 나는 Mavericks에 있고 다른 어떤 것에 그것을 시험 할 수 없었다. 하지만 NSOpenPanel을 처음 열면 20-40 초를 말하는 것처럼 영원히 걸릴 것입니다. 두 번째로 나는 그것을 부른다. 그것은 괜찮은 것처럼 보인다. 나를 미치게 만들어! – robertmiles3

26

실제로 선택한 파일 사용자에 대해 읽기/쓰기 권한을 허용해야합니다. Xcode 5.1에서는 Capabilities - App Sandbox 아래에 있습니다.내 경우

enter image description here

+0

Incredibily helpful! 제이, 고마워. – ixany

+0

내 사건에 대한 올바른 대답입니다. 고맙습니다! – Jim75

0

이 오류에 대한 문제는 주요 아니었다 스레드에 [NSOpenPanel openPanel]를 호출했다. 문제는

관련 문제