I'm trying to open a picker with only certain file types allowed. I'm using this documentation to find the UTTYpe I need: https://developer.apple.com/documentation/uniformtypeidentifiers/uttype/system_declared_uniform_type_identifiers
but I can't find a UTTYpe for .pages, .doc, .docx for example...
what should I do?
this is my code for the moment
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)
}
CodePudding user response:
You can create a UTType from a file extension like this:
UTType(tag: "pages", tagClass: .filenameExtension, conformingTo: nil)
This creates a UTType?, as there can be no UTType associated with the given file extension.
You can also use:
UTType(filenameExtension: "pages")
but this only finds a UTType if the file extension inherits from public.data, so it won't work for all the file extensions.
On macOS Terminal, you can also use the mdls command to inspect the Uniform Type Identifier of a file
mdls -name kMDItemContentType yourFile.pages
Or its entire tree:
mdls -name kMDItemContentTypeTree yourFile.pages
After that you can create a UTType using its identifier like this:
UTType("com.apple.iwork.pages.sffpages")
