Я создаю средство выбора файлов с помощью UIDocumentPickerViewController и хочу выбрать только следующие типы файлов (другие должны быть отключены),
- doc
- docx
- pdf
- gdoc (формат файла Google doc)
- txt
- rtf
Код, который я имею до сих пор, выглядит следующим образом:
import UIKit
import MobileCoreServices
class DocumentPickerVC: UIViewController {
@IBAction func btnLocalTapped(sender: UIButton) {
let types: [String] = [kUTTypeText as String, kUTTypePDF as String, "com.microsoft.word.doc", "org.openxmlformats.wordprocessingml.document"]
let documentPicker = UIDocumentPickerViewController(documentTypes: types, in: .import)
documentPicker.delegate = self
documentPicker.modalPresentationStyle = .formSheet
documentPicker.allowsMultipleSelection = true
self.present(documentPicker, animated: true, completion: nil)
}
}
extension DocumentPickerVC: UIDocumentPickerDelegate {
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
// you get from the urls parameter the urls from the files selected
for url in urls {
print(url)
}
}
}
Я не могу понять, что такое UTCoreType для документов Google.
Я просмотрел список, найденный здесь https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html, но не повезло.
В качестве второй попытки найти UTCoreType я попробовал следующее:
Сделал все файлы разблокированными для средства выбора, изменив типы следующим образом:
let types = [kUTTypeItem as String]
Загруженный файл с помощью средства выбора и перемещенный в каталог документов
Включен общий доступ к файлам iTunesи сделал копию на моем рабочем столе
Запустил инструмент 'mdls' для файла
Команда:
$ mdlsdoc2.gdoc
Вывод:
kMDItemContentCreationDate = 2018-10-15 23:07:02 +0000
kMDItemContentCreationDate_Ranking = 2018-10-15 00:00:00 +0000
kMDItemContentModificationDate = 2018-10-15 23:07:05 +0000
kMDItemContentType = "dyn.ah62d4rv4ge80s3dtqq"
kMDItemContentTypeTree = (
"dyn.ah62d4rv4ge80s3dtqq",
"public.data",
"public.item"
)
kMDItemDateAdded = 2018-10-15 23:07:12 +0000
kMDItemDateAdded_Ranking = 2018-10-15 00:00:00 +0000
kMDItemDisplayName = "doc2.gdoc"
kMDItemFSContentChangeDate = 2018-10-15 23:07:05 +0000
kMDItemFSCreationDate = 2018-10-15 23:07:02 +0000
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 0
kMDItemFSHasCustomIcon = (null)
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = (null)
kMDItemFSLabel = 0
kMDItemFSName = "doc2.gdoc"
kMDItemFSNodeCount = (null)
kMDItemFSOwnerGroupID = 20
kMDItemFSOwnerUserID = 501
kMDItemFSSize = 16848
kMDItemFSTypeCode = ""
kMDItemInterestingDate_Ranking = 2018-10-15 00:00:00 +0000
kMDItemKind = "Document"
kMDItemLogicalSize = 16848
kMDItemPhysicalSize = 20480
Попробовал kMDItemContentType файла, но он не работал
Сейчас у меня нет идей.Есть мысли?