2017-03-01 246 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示例)

相關問題