我的应用有一个受支持的统一类型指示符(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
的见解都将非常有帮助。
1条答案
按热度按时间deyfvvtc1#
你只需要
import UniformTypeIdentifiers
,并使用它的初始化器将你的字符串Map到UTType
: