14

我在我的 Cocoa 应用程序中做一个简单的文件打开面板。我启用了权利和应用沙盒。但是在 OS X 10.9 上,当应用程序应该使用 来打开一个对话框时NSOpenPanel,它会崩溃:

应用程序特定信息:
由于未捕获的异常“NSObjectNotAvailableException”而终止应用程序,原因:“服务 com.apple.appkit.xpc.openAndSavePanelService 未能代表由于 {“proxy-communications-error”=“错误而初始化 NSOpenPanelService 的实例域=NSCocoaErrorDomain 代码=4099 \"\U041d\U0435 \U0443\U0434\U0430\U043b\U043e\U0441\U044c \U0443\U0441\U0442\U0430\U043d\U043e\U0432\U0432\0441\U0432\0442\U0432\04442\U0434 \U044f\U0437\U044c\U0441\U043f\U0440\U043e\U0433\U0440\U0430\U043c\U043c\U043e\U0439-\U043f\U043e\U043c\U043e\U0449\U043dU\U043e\U043dU\U043e \" (连接从这个进程失效。) 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) {
        ...
    }];

有没有人见过这个?

4

4 回答 4

26

实际上,您必须明确允许对用户选择的文件具有读/写权限。在 Xcode 5.1 中,它位于 Capabilities - App Sandbox 下。

在此处输入图像描述

于 2014-05-06T14:11:50.247 回答
3

我认为您需要在您的应用权利中激活“用户选择的文件”!

试一试,在 xcode 5 beta 中看起来像这样,在 xcode 4 中应该在项目的一般页面上,您可以在其中激活权利!

让我知道!

- - - - - 编辑

好吧,我认为您的问题在于您如何调用面板。

首先,使用以下命令初始化面板:

NSOpenPanel * openDlg = [NSOpenPanel openPanel];

[openDlg setCanChooseFiles:NO];
[openDlg setAllowsMultipleSelection:NO];
[openDlg setCanChooseDirectories:YES];
[openDlg setCanCreateDirectories:YES];

最后,将对话框“呼叫”从:

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

至:

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

它现在应该可以工作了!

于 2013-08-22T11:07:29.680 回答
1

在我的情况下,这个错误的问题是调用[NSOpenPanel openPanel]了一个不是主线程的线程。将整个事物封装在一个

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

解决了问题

于 2016-10-09T02:28:12.590 回答
0

我的 OS X 应用程序“Make a Face”在尝试调用简单文件打开面板时也出现问题。该应用程序没有崩溃,但“选择要打开的文件”窗口开始闪烁,对话框中的像素灯开始跳动,鼠标点击有 20 到 40 秒之间的延迟影响。非常超现实。这只发生在 Mavericks 10.9 中。

沙盒权利“com.apple.security.files.user-selected.read-write”已启用,就像之前所有应用程序上传一样。然而,在 Mavericks 下,“跳动的轻文件打开面板综合症”使得从应用程序中打开用户选择的 JPEG 或 PNG 文件非常困难。

于 2013-08-28T12:31:02.423 回答