如何将 UTType 与 UIdocumentPicker(页面?docx?)一起使用

How to use UTType with a UIdocumentPicker (pages? docx?)

我正在尝试打开一个只允许特定文件类型的选取器。 我正在使用此文档来查找我需要的 UTTYpe: https://developer.apple.com/documentation/uniformtypeidentifiers/uttype/system_declared_uniform_type_identifiers

但是我找不到 .pages、.doc、.docx 的 UTTYpe...

我该怎么办?

这是我目前的代码

    func presentPickerDocument() {
    //Create a picker specifying file type and mode
    var supportedTypes: [UTType]
    supportedTypes = [UTType.pdf, UTType.url]

    let documentPicker = UIDocumentPickerViewController(forOpeningContentTypes: supportedTypes, asCopy: true)
    documentPicker.delegate = self
    documentPicker.allowsMultipleSelection = false
    present(documentPicker, animated: true, completion: nil)
}

您可以从这样的文件扩展名创建 UTType

UTType(tag: "pages", tagClass: .filenameExtension, conformingTo: nil)

这会创建一个 UTType?,因为没有 UTType 与给定的文件扩展名关联。

您还可以使用:

UTType(filenameExtension: "pages")

但是如果文件扩展名继承自 public.data,这只会找到 UTType,因此它不适用于所有文件扩展名。

在 macOS 终端上,您还可以使用 mdls 命令检查文件的统一类型标识符

mdls -name kMDItemContentType yourFile.pages

或其整个树:

mdls -name kMDItemContentTypeTree yourFile.pages

之后,您可以使用其标识符创建一个 UTType,如下所示:

UTType("com.apple.iwork.pages.sffpages")