2010-08-10 36 views
1

我创建的Mac OS X的应用程序,我想知道是否我用正确的尿路感染在应用程序的.plist文件中:我是否正确使用了统一类型标识符?

<key>UTExportedTypeDeclarations</key> 
<array> 
    <dict> 
     <key>UTTypeIdentifier</key> 
     <string>com.petroules.silverlock.database</string> 
     <key>UTTypeDescription</key> 
     <string>Silverlock Database File</string> 
     <key>UTTypeIconFile</key> 
     <string>app.icns</string> 
     <key>UTTypeConformsTo</key> 
     <array> 
      <string>public.data</string> 
     </array> 
     <key>UTTypeTagSpecification</key> 
     <dict> 
      <key>com.apple.ostype</key> 
      <string>SDBX</string> 
      <key>public.filename-extension</key> 
      <array> 
       <string>sdbx</string> 
      </array> 
      <key>public.mime-type</key> 
      <string>application/octet-stream</string> 
     </dict> 
    </dict> 
</array> 

出现此代码的工作,虽然双击Finder中的.sdbx文件不会导致我的应用程序打开文件本身......但这可能只是我的代码(稍后我会介绍)。

另外,我的文件类型的格式是以base-64编码的加密内容...是应用程序/八位字节流是用于该应用程序的最佳MIME类型,还是我应该使用的其他内容,通过使用不太常见的MIME类型来解决频谱中任何地方的兼容性问题?

而且,我包括下面的代码:

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeExtensions</key> 
     <array> 
      <string>sdbx</string> 
     </array> 
     <key>CFBundleTypeIconFile</key> 
     <string>app.icns</string> 
     <key>CFBundleTypeName</key> 
     <string>com.petroules.silverlock.database</string> 
     <key>CFBundleTypeRole</key> 
     <string>Editor</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.petroules.silverlock.database</string> 
     </array> 
     <key>LSHandlerRank</key> 
     <string>Owner</string> 
    </dict> 
</array> 

我应该包括这在所有因为我有上面的UTI代码?这是必要的吗?两者有什么区别?我没有真正能够从文档中确定这一点。谢谢:)

回答

2

要确定此代码或代码是否有问题,请在双击该文件之前退出您的应用程序。如果这启动您的应用程序,但不打开该文件,那么你的Info.plist是好的,你的问题在-[[NSApp delegate] application:openFile:]。如果应用程序根本不启动,那么就启动服务而言,您可以确定您的Info.plist是不正确的。

需要UTExportedTypeDeclarationsCFBundleDocumentTypes节。第一个告诉启动服务您的自定义UTI存在。第二个告诉它,你的应用程序是该文件类型的编辑器。

+0

我应该提到它是一个基于Qt的应用程序,因此'[[NSApp委托]应用程序:openFile:]'不适用...明天我必须检查我的代码。感谢有关plist文件和UTI的信息。 – 2010-08-10 09:06:24

+0

查看http://stackoverflow.com/questions/3451280/opening-files-from-finder-with-a-qt-based-application关于在Finder中双击Qt应用程序时打开文件。 – 2010-08-12 09:48:12