我正在尝试从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)
}
答案 0 :(得分:0)
urls是URL数组,不是URL,不是String
尝试:
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)
}
}
答案 1 :(得分:0)
除调试输出外,请勿将String(describing:)
用于其他任何用途。您的代码正在生成URL
实例数组的调试输出。该输出将类似于:
[file:///some/directory/someFileA.ext,file:///some/directory/otherFile.ext]
当然,无论选择多少文件,数组输出都会包含
。然后,您尝试从URL
实例数组的调试输出中创建文件URL,然后获取该URL的最后一个路径。这就是为什么您会得到结尾的]
。
只需访问所需数组中的元素即可。不要创建新的URL
。
if let filename = urls.first?.lastPathComponent {
self.pickedFile.append(filename)
}
更好的是,将它们全部添加:
for url in urls {
self.pickedFile.append(url.lastPathComponent)
}