我是否正确使用了统一类型标识符?
问题描述:
我创建的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代码?这是必要的吗?两者有什么区别?我没有真正能够从文档中确定这一点。谢谢:)
答
要确定此代码或代码是否有问题,请在双击该文件之前退出您的应用程序。如果这启动您的应用程序,但不打开该文件,那么你的Info.plist
是好的,你的问题在-[[NSApp delegate] application:openFile:]
。如果应用程序根本不启动,那么就启动服务而言,您可以确定您的Info.plist
是不正确的。
你做需要UTExportedTypeDeclarations
和CFBundleDocumentTypes
节。第一个告诉启动服务您的自定义UTI存在。第二个告诉它,你的应用程序是该文件类型的编辑器。
我应该提到它是一个基于Qt的应用程序,因此'[[NSApp委托]应用程序:openFile:]'不适用...明天我必须检查我的代码。感谢有关plist文件和UTI的信息。 – 2010-08-10 09:06:24
查看http://stackoverflow.com/questions/3451280/opening-files-from-finder-with-a-qt-based-application关于在Finder中双击Qt应用程序时打开文件。 – 2010-08-12 09:48:12