[英]How do I launch a non-document-based Cocoa application by dropping files on it?
我能夠使它正常工作的唯一方法是使用基於文檔的應用程序(該應用程序不是)。 在非基於文檔的應用程序中,我已經定義了受支持的文檔類型(從“目標信息”窗口的“屬性”選項卡中),並且我的AppDelegate實現了application:openFile:
和application:openFiles:
這樣就可以在啟動應用程序時將其拖放到應用程序的Dock圖標上,而不是將其拖放到Finder中的圖標上(已啟動或以其他方式)。 我想念什么?
更新
根據要求,我的文檔類型數組:
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>nsf</string>
<string>nsfe</string>
</array>
<key>CFBundleTypeName</key>
<string>NSF Soundtrack</string>
<key>CFBundleTypeRole</key>
<string>None</string>
<key>LSTypeIsPackage</key>
<false/>
<key>NSPersistentStoreTypeKey</key>
<string>InMemory</string>
</dict>
</array>
這兩個部分使我感到懷疑:
<key>CFBundleTypeRole</key>
<string>None</string>
您不是說這至少要成為Viewer嗎?
<key>NSPersistentStoreTypeKey</key>
<string>InMemory</string>
您想在這里做什么? 為什么將磁盤上的文件指定為內存中的Core Data持久存儲? 如果要在加載時將整個內容提升到內存中,則稱為Binary或XML,而不是InMemory。
我還建議您為文檔類型定義UTI,而不僅僅是擴展名。
您還應該使用lsregister
仔細檢查Launch Services認為正在進行的lsregister
。 有時,問題在於您的應用有多個版本,而Launch Services找不到您認為應該擁有的版本。 您可以這樣查找Launch Services數據庫:/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -dump
這應該適用於10.5和10.6。 10.4將lsregister
放在其他位置。 我通常使用locate
來查找它,而不是嘗試記住它。
在“目標”設置中,轉到“屬性”選項卡,然后添加到“文檔類型”表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.