2014-04-09 18 views
0

我希望能夠從取景器打開一個文件,我的應用程序我如何通過從Finder中的文件名進入我的OS X應用

點擊該文件,並選擇,然後選擇我的應用程序打開。

我不使用NSDocumentController,我已經把這個在我的applicationdelegate

-(BOOL) application:(NSApplication *)sender openFile:(NSString *)filename; 

,因爲我或多或少地猜測我的方式,通過這個任何一個可以告訴我,如果我在正確的軌道上

也有一些我需要爲了告訴操作系統什麼王的文件做我不放過

問候基督教

回答

1
  1. 您必須註冊程序關聯的文件類型,您可以通過向plist添加「LSItemContentTypes」鍵並指定文件類型來完成此操作。

與本文中描述的內容類似。 How do I associate file types with an iPhone application?

  1. 當用戶打開文件時,委託方法將被調用。

-(BOOL) application:(NSApplication *)sender openFile:(NSString *)filename;

  1. 文件名參數將與路徑一起使用,然後您可以使用該文件處理文件。
1

您還需要在Info.plist文件中指定啓動服務密鑰。

來自:Launch Services Programming

的CFBundleTypeName鍵指定文檔類型的一種字符串,用於表徵在屏幕上這種類型的文檔的用戶可見的說明(如在Finder的獲取信息窗口或在Finder列表視圖的Kind列)。可以通過將此密鑰包含在適當的.lproj子目錄的InfoPlist.strings文件中來對本密鑰進行本地化。 CFBundleTypeIconFile標識包含用於在屏幕上顯示此類文檔的圖標圖像的文件。 LSTypeIsPackage指定文檔是打包的包(true)還是單個文件(false)。

屬於給定文檔類型的文件可能以其文件類型,文件擴展名或MIME類型爲特徵。類型定義字典中的CFBundleTypeOSTypes鍵指定一個由四個字符的文件類型代碼組成的數組,這些代碼表徵此類型的文檔;同樣,CFBundleTypeExtensions指定一個文件擴展名數組,以及CFBundleTypeMIMETypes指定一個MIME類型數組。如果相應的文件特徵不相關,則可以省略任何這些單獨的密鑰,但其中至少有一個必須存在,以使文件類型不是空的。要允許應用程序在拖放操作期間接受不受限制的文件類型或擴展名的文件,可以分別對CFBundleOSTypes或CFBundleTypeExtensions使用特殊的通配符值'* *'或'*'。 (這些僅在拖放操作中才有效,而不是在用戶通過雙擊打開文檔時才能使用。)最後,CFBundleTypeRole鍵指定應用程序相對於給定類型的文件稱,根據所描述的角色

這裏從的榜樣TextEdit.apprtf文件的「應用程序角色」:

<key>CFBundleDocumentTypes</key> 
    <array> 
      <dict> 
        <key>CFBundleTypeIconFile</key> 
        <string>rtf.icns</string> 
        <key>CFBundleTypeName</key> 
        <string>NSRTFPboardType</string> 
        <key>CFBundleTypeRole</key> 
        <string>Editor</string> 
        <key>LSIsAppleDefaultForType</key> 
        <true/> 
        <key>LSItemContentTypes</key> 
        <array> 
          <string>public.rtf</string> 
        </array> 
        <key>NSDocumentClass</key> 
        <string>Document</string> 
        <key>NSIsRelatedItemType</key> 
        <true/> 
      </dict> 
</array> 
0

謝謝大家一兩件事,我發現打開的文件的applicationDidFinishLaunching 之前在那裏我創建其中包含我的文件打開方法我的視圖控制器callecalled,是

乾杯·克里斯蒂安·安徒生

+1

所以節省您需要在應用程序的任何信息:中openFile:方法被調用所以後來在applicationDidFinishLaunching時:是叫你可以使用保存的信息。 – geowar

+0

是的,它在applicationdidfinishlaunching方法之前被調用。 – rustylepord

相關問題