2012-08-23 68 views
0

我創建了一個基於文檔的應用程序,需要打開具有特定擴展名的xml文本文件。當我使用NSDocument模板在Xcode中創建項目時,我指定了我想要的擴展,並且一切正常。NSDocument應用程序和文件擴展名

遵循蘋果指南關於如何構建基於文檔的應用程序,我去編輯Info.plist文件以添加以前缺失的UTI的細節。突然我的應用程序停止打開文件,我想要的擴展名,實際上停止打開任何文件。另外,當我嘗試保存文件時,保存對話框不再提示任何擴展名。

當我保存文件,並從終端運行命令mdls我得到

kMDItemContentTypeTree   = (
    "public.data", 
    "public.item" 
) 

,而不是public.xml我的UTI在Info.plist的設定。 似乎我的應用程序停止識別Info.plist中存儲的信息。有什麼我必須連接在Xcode爲了這個工作?

這裏是我的Info.plist文件中的相關部分:

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeExtensions</key> 
     <array> 
      <string>xmds</string> 
     </array> 
     <key>CFBundleTypeIconFile</key> 
     <string>AppIcon</string> 
     <key>CFBundleTypeName</key> 
     <string>XMDS Script</string> 
     <key>CFBundleTypeOSTypes</key> 
     <array> 
      <string>xmds</string> 
     </array> 
     <key>CFBundleTypeRole</key> 
     <string>Editor</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.dedalus.degs</string> 
     </array> 
     <key>NSDocumentClass</key> 
     <string>Document</string> 
    </dict> 
</array> 
<key>UTExportedTypeDeclarations</key> 
<array> 
    <dict> 
     <key>UTTypeConformsTo</key> 
     <array> 
      <string>public.xml</string> 
     </array> 
     <key>UTTypeDescription</key> 
     <string>XMDS Script</string> 
     <key>UTTypeIconFile</key> 
     <string>AppIcon</string> 
     <key>UTTypeIdentifier</key> 
     <string>com.dedalus.degs</string> 
     <key>UTTypeTagSpecification</key> 
     <dict> 
      <key>com.apple.ostype</key> 
      <array> 
       <string>xmds</string> 
      </array> 
      <key>public.filename-extension</key> 
      <array> 
       <string>xmds</string> 
      </array> 
     </dict> 
    </dict> 
</array> 
+0

我已經嘗試使用Xcode模板創建一個基於文檔的新項目。在開始時,應用程序打開並將文檔保存在模板中指定的擴展名中。只要我在項目的目標信息設置中爲文檔類型輸入標識符,一切都會中斷。 – Jacopo

回答

3

我用該項目的目標信息設置來設置文件類型和尿路感染,而不是在Xcode 4.2和4.4的Info.plist文件。這將從Info.plist文件中提取並在更改後對其進行修改。嘗試使用它。

文檔類型定義了將處理擴展名和擴展名的類。導出的UTI表示您的應用具有權威性的擴展名。看到這個Stackoverflow問題: What are 「Imported UTIs」 in Xcode 4?

我導出的UTI符合public.data(「任何類型的簡單字節流的基本類型,包括文件和內存中的數據」)。如果您使用標識符,請確保文檔類型和導出UTI中的標識相同。

+0

這正是我設置這些的方法。我只是認爲粘貼Info.plist更容易閱讀。 – Jacopo