Apple文件和数据类型UTI
Apple文件和数据类型UTI

Apple文件和数据类型UTI

UTI 全称是 Uniform Type Identifier(统一类型标识符),是 Apple 定义的一种用于统一表示文件和数据类型的字符串格式,用来取代早期的 MIME 类型和文件扩展名的混乱做法。

什么是UTI?

UTI 是一个唯一标识符字符串,代表一种内容类型。

例如:

纯文本:文件扩展名 .txt,UTI是public.plain-text。

PNG 图片:文件扩展名 .txt,UTI是 .png。

JPEG 图像:文件扩展名 .jpg,UTI是 .public.jpeg

PDF 文件:文件扩展名 .pdf,UTI是 com.adobe.pdf。

文件夹:文件夹扩展名——,UTI是public.directory。

Swift 文件:文件扩展名 .swift,UTI是public.swift-source。

每种内容类型都可以对应一个或多个扩展名,也可以映射到多个 MIME 类型,但它们都统一归为一个 UTI 标识符。

Apple平台使用UTI

从 iOS 14 / macOS 11 开始,Apple 推出 UTType 结构来替代旧的字符串 UTI,用于 Swift 类型安全地访问。

旧的写法:

let uti: String = "public.png"

Swift新写法(推荐):

import UniformTypeIdentifiers

let type: UTType = .png
print(type.identifier) // "public.png"

和UTType的关系

UTI:底层字符串标识(如 “public.json”)。

UTType:Swift 类型封装(如 .json),内部就是 UTI 字符串。

可以从 UTType 获取 UTI 字符串:

let jsonType = UTType.json
print(jsonType.identifier) // "public.json"

常见UTI示例

1、文本:UTI标识符public.plain-text,Swift UTType是 .plainText。

2、图片:UTI标识符public.image,Swift UTType是 .image。

3、PNG 图片:UTI标识符public.png,Swift UTType是 .png。

4、JPEG 图片:UTI标识符public.jpeg,Swift UTType是 .jpeg。

5、音频:UTI标识符public.audio,Swift UTType是 .audio。

6、视频:UTI标识符public.movie,Swift UTType是 .movie。

7、JSON:UTI标识符public.json,Swift UTType是 .json。

8、文件夹:UTI标识符public.directory,Swift UTType是 .directory。

自定义UTI(高级)

可以为自己的 App 定义一个自定义 UTI,比如:

UTType(exportedAs: "com.yourcompany.mydoc")

在Info.plist中注册:

<key>UTExportedTypeDeclarations</key>
<array>
  <dict>
    <key>UTTypeIdentifier</key>
    <string>com.yourcompany.mydoc</string>
    <key>UTTypeConformsTo</key>
    <array>
      <string>public.data</string>
    </array>
    <key>UTTypeDescription</key>
    <string>My Custom Document</string>
    <key>UTTypeTagSpecification</key>
    <dict>
      <key>public.filename-extension</key>
      <array>
        <string>mydoc</string>
      </array>
      <key>public.mime-type</key>
      <string>application/mydoc</string>
    </dict>
  </dict>
</array>

总结

UTI是统一类型标识符(如 “public.png”)。

在Swift中对UTI封装为UTType,让UTI更安全、可读性强。

用于表示文件/数据类型,导入、导出和文档注册等场景。

替代了文件扩展名 + MIME类型的混乱组合。

在.fileImporter 和 .fileExporter 都必须依赖 UTType(背后就是 UTI)。

UTType 比 .ext == “.png” 更安全,跨平台更可靠。

自定义 App 的文档格式,必须注册新的 UTI(例如 com.myapp.myfile)。

扩展知识

1、Apple类型标识符UTType:https://fangjunyu.com/2025/07/05/apple%e7%b1%bb%e5%9e%8b%e6%a0%87%e8%af%86%e7%ac%a6uttype/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注