2017-03-01 242 views
1

我正在尝试将自定义文件扩展名关联到我正在处理的应用程序,以便在双击具有特定扩展名的文件时,我的应用程序将启动。将自定义文件扩展名关联到我的应用

.abc文件只是一个存档文件(.zip重命名为.abc)收集几个.xml文件。当我用我的应用程序加载其中一个.abc文件时,归档文件被解压缩,并且.xml文件被解析,因此我可以在代码中为某些变量设置一些值。

如果我理解正确,那么有两个部分。

  • 让OS X知道,扩展名为.abc必须用我的应用程序
  • 处理的文件在我的应用程序,一旦它推出

现在我在与第一部分的问题有关。我已经阅读了一些处理这个问题的堆栈溢出帖子(如herehere),但我不明白他们是如何拿出关键字<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文件的存档?

如果有人可以帮助我解决这个:)

感谢

+0

随时回答您自己的问题:D – robertklep

+0

我认为编辑它是要走的路! – nmud

+0

很容易忽略在问题(IMHO)中发布的答案。 – robertklep

回答

0

我找到了解决我的问题,我只是误读的文档,因为关键CFBundleTypeIconFile是一个字符串,而不是字符串数组(我感到困惑,因为我正在关注以及使用密钥CFBundleTypeIconFiles这是一个数组的iOS示例)

相关问题