2010-06-15 67 views
2

我有一個應用程序,用Obj-C編寫。 info.plist有一個應用程序可以打開的文件類型列表。我很確定這是有效的,因爲當我嘗試拖動不可接受類型的文件時,應用程序不會高亮顯示,但是當我拖動可接受類型的文件時,它確實會突出顯示,並讓我放下。創建一個可以打開給定格式文件的應用程序

當我放下,應用程序啓動時,正確的,但是,然後我得到一個對話框說法:

文件「foo.tiff」無法打開。 DocView無法打開「TIFF文件」格式的文件。

我做我的info.plist

<key>CFBundleTypeExtensions</key> 
<array> 
    <string>tif</string> 
    <string>tiff</string> 
</array> 
<key>CFBundleTypeIconFile</key> 
<string>TIFFFile.icns</string> 
<key>CFBundleTypeName</key> 
<string>TIFF File</string> 
<key>CFBundleTypeOSTypes</key> 
<array> 
    <string>TIFF</string> 
</array> 
<key>CFBundleTypeRole</key> 
<string>Viewer</string> 
<key>LSHandlerRank</key> 
<string>Documents/</string> 

感謝有這個。

+0

是' tif 2010-06-15 15:26:30

+0

是的,它肯定已經被刪除,當我重新格式化抱歉。糾正。 – 2010-06-15 15:38:07

回答

4

您的應用程序是否實際處理文件打開?

如果是NSDocument應用程序,則需要實現其中一種文件讀取方法,如readFromData:ofType:error:。在一個普通的NSApplication中,你的應用程序委託應該在application:openFile:中處理它。在這兩種情況下,您都需要返回YES以確認您已成功打開該文件。

如果你已經實現了這個,消息是否被髮送?

+0

我有一個文檔類是從NSDocument的子類。我有readFromData:ofType:errors:和readFromURL:ofType:errors。這兩者似乎都沒有被調用。 – 2010-06-15 18:35:41

+0

夠公平的。無論如何,JWWalker可能已經釘住了它。 – walkytalky 2010-06-15 20:05:47

+0

是的,他的應用程序:openFile是我需要去的方式。謝謝! – 2010-06-16 17:37:43

1

首先,您顯示的Info.plist部分位於CFBundleDocumentTypes數組內,而不是Info.plist的頂層,對吧?

其次,在LSHandlerRank下您有Documents /,這不是合法的值,也不是Documents。

第三,您可能需要添加NSDocumentClass。

+0

我在哪裏需要添加NSDocumentClass?我有一個文檔類,這是從NSDocument的子類已經... – 2010-06-15 18:36:37

+0

這是字典中的另一個關鍵字,包括您張貼的條目:' NSDocumentClass YourDocumentClassName' – walkytalky 2010-06-15 19:59:08

+0

是超級類?我有4個文檔類被分類爲文檔... – 2010-06-15 20:42:14

相關問題