Как получить правильное имя файла из UIDocumentPicker, didPickDocuments по URL: [URL] - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь получить выбранное имя файла с расширением от UIDocumentPickerViewController, но имя файла имеет "]" в конце расширения файла. Любое предложение о том, как правильно?

Вот мой код:

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
    let filename = URL(fileURLWithPath: String(describing:urls)).lastPathComponent // print: myfile.pdf]
    self.pickedFile.append(filename)
    // display picked file in a view
    self.dismiss(animated: true, completion: nil)
}

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Никогда не используйте String(describing:) для чего-либо, кроме отладочного вывода.Ваш код генерирует выходные данные отладки из массива URL экземпляров.Этот вывод будет выглядеть примерно так:

[file: ///some/directory/someFileA.ext,file: ///some/directory/otherFile.ext]

Конечно, выходной массив будет содержать сколько файлов было выбрано.

Затем вы пытаетесь создать URL файла из этого отладочного вывода массива URL экземпляров, а затем получить последний компонент пути этого,Вот почему вы получаете конечный ].

Просто получите доступ к элементу из массива, который вы хотите.Не создавайте новый URL.

if let filename = urls.first?.lastPathComponent {
    self.pickedFile.append(filename)
}

Еще лучше, добавьте их все:

for url in urls {
    self.pickedFile.append(url.lastPathComponent)
}
0 голосов
/ 04 апреля 2019

urls - это массив URL, а не URL, а не строка

try:

 func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
    if let filename =  urls.first?.lastPathComponent {
        self.pickedFile.append(filename)
        // display picked file in a view
        self.dismiss(animated: true, completion: nil)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...