swift 什么是将统一类型指示符字符串列表(例如,[“public.text”,“public.image”])转换为UTType列表的iOS 16兼容方式?

nmpmafwu  于 2023-05-05  发布在  Swift
关注(0)|答案(1)|浏览(255)

我的应用有一个受支持的统一类型指示符(UTI)字符串列表:

public static let supportedUTIs = ["public.text", "public.image", "com.adobe.pdf", "public.comma-separated-values-text", "com.microsoft.word.doc", "org.openxmlformats.wordprocessingml.document", "com.microsoft.excel.xls", "org.openxmlformats.spreadsheetml.sheet", "com.microsoft.powerpoint.ppt", "org.openxmlformats.presentationml.presentation", "com.apple.iwork.pages.pages", "com.apple.iWork.Numbers.numbers", "com.apple.keynote.key"]

在将我的应用的最低部署目标迁移到iOS 16时,我注意到在计划对文件使用导入模式时,UIDocumentPickerViewController(documentTypes:in:)的使用已更改为UIDocumentPickerViewController(forOpeningContentTypes:)documentTypes接受[String],而新的forOpeningContentTypes参数需要[UTType]
我需要在应用程序中保留UTI字符串列表,因为它正在其他地方使用,但是有没有一种好的方法可以编程地将此列表转换为新的UTType列表,以便我可以传递到UIDocumentPickerViewController中?
我已经尝试了一些来自论坛的旧解决方案,但它们往往与iOS 16的最低部署目标不兼容,因为任何使用kUTType的东西都已被弃用。我也见过几个小类型检查的例子(例如,这个文件是一个图像,这是一个视频,等等),但我不确定如何处理我的supportedUTIs列表中更具体的文件扩展名。
任何关于如何在iOS 16中将此列表从String转换为UTType的见解都将非常有帮助。

deyfvvtc

deyfvvtc1#

你只需要import UniformTypeIdentifiers,并使用它的初始化器将你的字符串Map到UTType

let utTypes = supportedUTIs.compactMap(UTType.init)

相关问题