Cocoa 在OS X中,通过将文档放置在基于文档的应用程序图标上打开文档

Cocoa 在OS X中,通过将文档放置在基于文档的应用程序图标上打开文档,cocoa,Cocoa,我正在制作一个基于文档的应用程序,其中文档是应用程序包。 我可以通过“文件”打开它们→ 打开“菜单”即可。但当我尝试将它们放在Dock图标上时,它们会被拒绝,并且图标不会高亮显示 我已经搜索了这个问题,考虑到指定了LSItemContentTypes属性,它似乎应该可以正常工作。以下是我的Info.plist摘录: CFBundleDocumentTypes = ( { CFBundleTypeName = "Example"; CFBundleTypeRole =

我正在制作一个基于文档的应用程序,其中文档是应用程序包。 我可以通过“文件”打开它们→ 打开“菜单”即可。但当我尝试将它们放在Dock图标上时,它们会被拒绝,并且图标不会高亮显示

我已经搜索了这个问题,考虑到指定了LSItemContentTypes属性,它似乎应该可以正常工作。以下是我的Info.plist摘录:

CFBundleDocumentTypes = (
    {   CFBundleTypeName = "Example";
        CFBundleTypeRole = "Editor";
        LSHandlerRank = "Alternate";
        LSItemContentTypes = ( "com.apple.application-bundle" );
        NSDocumentClass = "Example";
        NSExportableTypes = ( "com.apple.application-bundle" );
    },
);
(我在Xcode之外开发,这是一个TextMate格式的plist文件。)

我还尝试在我的应用程序代理上实现
application:openFile:
application:openFiles:
,但它们从未被调用


日志中没有警告或其他相关消息。我缺少什么?

也许您需要将
LSTypeIsPackage
设置为
YES

这是我看到的你的plist和我的打开包的plist的唯一区别


之后,您可能需要注销/登录、重新启动应用程序或其他“刷新系统/启动服务”?

可能需要添加扩展<代码>CbundleTypeExtensionApp不工作。我没有它,因为LSItemContentTypes优先于它。看,我已经重新启动了我的Mac,它没有帮助。根据文档:“如果存在LSItemContentTypes键,则忽略此键”无论如何,我很高兴知道我的plist很好。我会尝试在一个新的应用程序上重现这个问题,也许我的应用程序中有什么特别的错误。