【发布时间】:2022-01-03 05:00:31
【问题描述】:
有没有办法将different UTType 扩展类型中的All 获取为字符串?我需要它们专门用于图像、音频和视频。
我关注了this answer,但它并没有给我所有的扩展名
var types = [String]()
let utiTypes = [kUTTypeImage, kUTTypeMovie, kUTTypeVideo, kUTTypeMP3, kUTTypeAudio, kUTTypeQuickTimeMovie, kUTTypeMPEG, kUTTypeMPEG2Video, kUTTypeMPEG2TransportStream, kUTTypeMPEG4, kUTTypeMPEG4Audio, kUTTypeAppleProtectedMPEG4Audio, kUTTypeAppleProtectedMPEG4Video, kUTTypeAVIMovie, kUTTypeAudioInterchangeFileFormat, kUTTypeWaveformAudio, kUTTypeMIDIAudio, kUTTypeLivePhoto, kUTTypeTIFF, kUTTypeGIF, kUTTypeQuickTimeImage, kUTTypeAppleICNS]
for type in utiTypes {
let str = String(type)
guard let utiStr = fileExtension(for: str) else { continue }
types.appent(utiStr)
}
dump(types)
结果是
15 elements // there are really 21 types
- "jpeg"
- "png"
- "mov"
- "mpg"
- "m2v"
- "ts"
- "mp3"
- "mp4"
- "mp4"
- "avi"
- "aiff"
- "wav"
- "midi"
- "tiff"
- "gif"
这里的问题是它不返回像 qt 或 jpg 这样的值。例如,我使用 UIDocumentPickerViewController,当我选择图像时,返回的 url pathExtension 是 jpg 而不是 jpeg。如果我想知道返回的 url 是否是一个图像,我将它的 pathExtension 与上面的 types 数组进行比较,它会说它没有出现在列表中。
【问题讨论】:
-
我实际上无法在操场上重现您的输出。我什至没有得到“jpeg”或“png”。
-
@Sweeper 这很奇怪吗?你导入
MobileCoreServices了吗?
标签: ios swift types uidocumentpickerviewcontroller mobilecoreservices