2010-06-04 75 views
1

现在我有一个生成XML文件的应用程序。我们将其称为someFile.myapp 当我的应用程序保存文件并使用mdls查看它时,它的kMDItemContentType为“dyn.234kdfsjk23jk24234kjfd” 如何将文件的UTI类型获得为像com一样的自定义值。 mycompany.myapp?如何制作标识为自定义UTI类型的文件?

回答

3

UTI通过应用程序的Info.plist文件中的声明链接到扩展。添加一个部分,像这样:

<key>UTExportedTypeDeclarations</key> 
<array> 
    <dict> 
     <key>UTTypeConformsTo</key> 
     <array> 
      <string>public.xml</string> 
     </array> 
     <key>UTTypeDescription</key> 
     <string>My Special File Type</string> 
     <key>UTTypeIdentifier</key> 
     <string>org.myapp.someutiidentifier</string> 
     <key>UTTypeTagSpecification</key> 
     <dict> 
      <key>public.filename-extension</key> 
      <array> 
       <string>myapp</string> 
      </array> 
     </dict> 
    </dict> 
</array> 
+0

我有一段时间让我的自定义文件类型与文件一起保存在我的基于文档的应用程序中。 UTTypeConformsTo是关键。 5个小时后,我仍然不知道“public.xml”来自哪里,因为我无法在任何地方找到它,但我很高兴它可以工作。我是唯一一个认为苹果UTI [适当命名](http://en.wikipedia.org/wiki/Urinary_tract_infection)的人? – alexantd 2011-10-28 19:58:20

+0

是的,它没有很好的记录;你必须在这里和那里抓定义,尽管'public.xml'是一个着名的定义。 规范性引用(如阅读源码,Luke)是'/ System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist'。 – Avi 2011-12-12 21:03:21

1

为您的文件创建唯一的扩展名,并使用导出的UTI声明将扩展名与您的UTI相关联。

1

文件由发射服务,这是理论上能够使用许多不同种类的信息有关的文件,以确定其类型,但在实践中会忽略比其他一切映射到尿路感染文件扩展名。因此,如果您希望文件的类型可识别,则需要提供一个唯一的扩展名并将其映射到应用的Info.plist中的相关类型。如果您的文件需要共享已被其他应用程序声明的扩展程序,那么您就是SOL。

就我所见 - 我把它说成是一个长期的Mac粉丝 - 这是Mac OS X的一个方面,它很容易说:“欢迎来到1985年!”

相关问题