UTType(全称 Uniform Type Identifier)是 Apple 提供的一种统一的类型标识符系统,用来表示文件、数据、内容的类型。
UTType 是一种类型描述符,类似于:
1、MIME 类型(如 “image/png”)。
2、文件扩展名(如 .png)。
3、自定义类型(如 “com.myapp.customdoc”)。
常见内置类型(iOS/macOS自带)
1、.plainText:纯文本,文件扩展名 .txt。
2、.image:图像类总称,文件扩展名 .png, .jpg 等。
3、.png:PNG 图像,文件扩展名 .png。
4、.jpeg:JPEG 图像,文件扩展名 .jpg, .jpeg。
5、.pdf:PDF 文件,文件扩展名 .pdf。
6、.json:JSON 数据,文件扩展名 .json。
7、.audio:音频类总称,文件扩展名 .mp3, .wav 等。
8、.movie:视频类,文件扩展名 .mp4, .mov 等。
9、.data:二进制数据,任意二进制文件。
10、.directory:文件夹,注意不是文件,是目录。
11、.package:文档包,文件扩展名 .app, .mydoc。
使用示例
1、限制文件类型为图片或文文本
.fileImporter(
isPresented: $showImporter,
allowedContentTypes: [.png, .jpeg, .plainText]
) { result in
// ...
}
这里fileImporter为SwiftUI导入文件,设置allowContentTypes的UTType,可以限制文件类型。
使用场景
1、fileImporter 选择哪些类型:allowedContentTypes: [UTType]。
2、fileExporter 导出什么类型:contentType: UTType。
3、DocumentGroup 支持哪些文档:static var readableContentTypes: [UTType]。
4、自定义文档类型:注册自己的 UTType(info.plist)。
构造自定义UTType(高级用法)
如果有自己的文档格式(如 .mydoc),可以:
1、定义类型(例如:com.yourcompany.mydoc)
static var readableContentTypes: [UTType] {
[UTType(exportedAs: "com.yourcompany.mydoc")]
}
2、在Info.plist中注册
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>My Custom Document</string>
<key>LSItemContentTypes</key>
<array>
<string>com.yourcompany.mydoc</string>
</array>
<key>CFBundleTypeExtensions</key>
<array>
<string>mydoc</string>
</array>
<key>CFBundleTypeRole</key>
<string>Editor</string>
</dict>
</array>
这里的注册流程跟 UTI 类似。
总结
UTType是Apple的统一类型标识符,用于描述文件类型、数据类型。
支持文本、图像、音频、PDF、二进制、自定义等类型。
通常在fileImporter、fileExporter、DocumentGroup中使用。
注意:在SwiftUI中使用UTType时,需要导入UniformTypeIdentifiers:
import UniformTypeIdentifiers
相关文章
1、Apple文件和数据类型UTI:https://fangjunyu.com/2025/07/05/apple%e6%96%87%e4%bb%b6%e5%92%8c%e6%95%b0%e6%8d%ae%e7%b1%bb%e5%9e%8b%e7%9a%84uti/