Выберите Google документы с помощью UIDocumentPickerViewController - PullRequest
0 голосов
/ 15 октября 2018

Я создаю средство выбора файлов с помощью 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 я попробовал следующее:

  1. Сделал все файлы разблокированными для средства выбора, изменив типы следующим образом:

    let types = [kUTTypeItem as String]

  2. Загруженный файл с помощью средства выбора и перемещенный в каталог документов

  3. Включен общий доступ к файлам iTunesи сделал копию на моем рабочем столе

  4. Запустил инструмент '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 файла, но он не работал

Сейчас у меня нет идей.Есть мысли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...