我正在尝试将自定义文件扩展名关联到我正在处理的应用程序,以便在双击具有特定扩展名的文件时,我的应用程序将启动。将自定义文件扩展名关联到我的应用
.abc文件只是一个存档文件(.zip重命名为.abc)收集几个.xml文件。当我用我的应用程序加载其中一个.abc文件时,归档文件被解压缩,并且.xml文件被解析,因此我可以在代码中为某些变量设置一些值。
如果我理解正确,那么有两个部分。
- 让OS X知道,扩展名为.abc必须用我的应用程序
- 处理的文件在我的应用程序,一旦它推出
现在我在与第一部分的问题有关。我已经阅读了一些处理这个问题的堆栈溢出帖子(如here或here),但我不明白他们是如何拿出关键字<LSItemContentTypes>
的字符串值的内容(我试过abc但它没有' t工作)和密钥<UTTypeIdentifier>
。
到目前为止,这是我的代码已经添加到我的Info.plist文件
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFile</key>
<array>
<string>myicon.icns</string>
</array>
<key>CFBundleTypeName</key>
<string>My Custom Project File</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>don't.know.what.to.put.here.abc</string>
</array>
</dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string> <!--not sure about that value-->
</array>
<key>UTTypeDescription</key>
<string>My Custom Project File</string>
<key>UTTypeIdentifier</key>
<string>don't.know.what.to.put.here.abc</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<string>abc</string>
<key>public.mime-type</key>
<string>application/octet-stream</string> <!--not sure about that value-->
</dict>
</dict>
</array>
而且,是UTTypeConformsTo
public.data确定在我的情况?由于自定义文件扩展名表示包含xml文件的存档?
如果有人可以帮助我解决这个:)
感谢
随时回答您自己的问题:D – robertklep
我认为编辑它是要走的路! – nmud
很容易忽略在问题(IMHO)中发布的答案。 – robertklep