我的Mac应用程序旨在编辑和分析图形,用户可以在文件系统的任何位置创建和存储文件。我去用户让他们打开一个以前创建的文件与[NSOpenPanel openPanel]
和一个内联完成处理程序块。在菜单处理我得到这个控制台错误信息几次:“在[NSOpenPanel openPanel]调用上无法更新[sic]书签项目”
2017-02-25 13:42:47.394433 pasteurnet3[32901:1263849] [default] Failed to updated bookmark for item (null) [60AF512E-6072-427D-8624-C406B0EF7D5A] - URL:file:///AirDrop with error Error Domain=NSCocoaErrorDomain Code=260 "The file couldn’t be opened because it doesn’t exist."
这只是发生在创建NSOpenPanel
的,甚至将其发送的beginWithCompletionHandler:
消息之前。 FWIW,尽管如此,菜单仍然会在最终请求时出现,允许选择文件,并且似乎可以正常工作。菜单对象的初始化似乎有很长的延迟。
我很长时间没有注意到这个应用程序,但消息的外观显然归功于MacOS的改变。我立即怀疑沙箱,但沙箱已关闭的应用程序。如果我打开沙箱并请求“用户选择的文件”权利,它似乎没有任何区别。
没有什么特别之处创建对象除了它是一个@try
块内完成:
@try {
// Create the File Open Dialog class.
openDialog_ = [NSOpenPanel openPanel]; // error occurs here
}
@catch (NSException *e){
NSLog(@"innocuous exception(1) in -initForOpenWithDefaultFile:callBackTo:");
}
@catch (NSString *s){
NSLog(@"innocuous exception(2) in -initForOpenWithDefaultFile:callBackTo: \"%@\"", s);
}
@catch (...) {
NSLog(@"innocuous exception(3) in -initForOpenWithDefaultFile:callBackTo: probably a layout error");
}
@finally {
;
}
我没有做使用书签事情从程序中也没有,对于这个问题,有空投。
Xcode 8.2.1,Macbook MacOS 10.12.3。
我在使用Qt的应用程序中看到了这一点,当我升级到Sierra和Qt 5.8时。我曾以为这是一个Qt问题,但显然不是。我并没有声称这是一个解决方案,但由于它似乎在寻找名为AirDrop的顶级目录,我尝试了创建一个。这至少摆脱了警告,并尝试这可能是一个有用的实验。我一直无法找到为什么文件打开对话框可能要查看/ AirDrop的任何解释,所以我真正在这里做的是分享一些经验。 – KeithS