Ответ 1
В самом деле, вы должны специально разрешать разрешения на чтение/запись для выбранных пользователем файлов. В Xcode 5.1 это находится в разделе "Возможности" - "Песочница приложений".
Я делаю простую открытую панель в приложении Cocoa. Я разрешаю права и песочницу приложений.
Но в OS X 10.9, когда приложение должно открыть диалог с помощью NSOpenPanel
, он сработает с помощью:
Информация о приложении:
Завершение приложения из-за неотображенного исключения "NSObjectNotAvailableException", причина: "service com.apple.appkit.xpc.openAndSavePanelService не удалось запустить экземпляр NSOpenPanelService от имени из-за { msgstr" Прокси-связь-ошибка "=" Ошибка домена = NSCocoaErrorDomain Code =\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) {
...
}];
Кто-нибудь видел это раньше?
В самом деле, вы должны специально разрешать разрешения на чтение/запись для выбранных пользователем файлов. В Xcode 5.1 это находится в разделе "Возможности" - "Песочница приложений".
Я думаю, что вам нужно активировать "Пользовательский файл" в ваших правах на приложение!
Попробуйте, в xcode 5 бета выглядит так: в 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. }
Теперь он должен работать!
My OS X app "Make a Face" также имеет проблемы при попытке вызвать панель открытого файла. Приложение не разбивается, но окно "выбрать файл для открытия" начинает мерцать, свет в диалоговом окне начинает пульсировать, а щелчки мыши имеют отложенный эффект от где-либо между 20 и 40 секундами. Очень сюрреалистично. Это происходит только в Mavericks 10.9.
Право на использование песочницы "com.apple.security.files.user-selected.read-write" включено, как и для всех предыдущих загрузок приложения. Тем не менее, под Mavericks, "пульсирующий световой файл синдрома открытой панели" делает открытие пользователем выбранного JPEG или PNG файла из приложения очень неустойчивым.
В моем случае проблема для этой ошибки вызывала [NSOpenPanel openPanel]
в потоке, который не был основным. Инкапсулируя все это внутри
dispatch_async(dispatch_get_main_queue(), ^{
NSSavePanel *saveAsPanel = [[NSSavePanel alloc] init];
// ... bla bla...
});
решил проблему