Я пытаюсь получить выбранное имя файла с расширением из 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)
}





URL-адреса - это массив URL-адресов, а не URL-адрес, а не строка
пытаться:
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)
}
}
Никогда не используйте 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)
}