SwiftUI中使用dropDestination获取拖放PDF文件名的方法
解决SwiftUI拖放PDF获取文件名的问题
你当前使用Data.self作为拖放接收类型,只能拿到文件的二进制数据,无法获取文件名这类元信息。正确的做法是将拖放类型改为URL.self——因为从Finder拖拽的文件对应的是本地文件URL,通过URL可以直接获取文件名,同时也能读取文件内容。
修改后的代码如下:
Text("Drop PDFs here") .dropDestination(for: URL.self) { items, location in for item in items { // 确认是本地文件URL guard item.isFileURL else { continue } // 获取文件名(包含扩展名) let filename = item.lastPathComponent // 直接通过URL加载PDF文档 if let document = PDFDocument(url: item) { pdfs.append(document) // 这里可根据需求使用filename做后续处理 print("已添加PDF:\(filename)") } } return !pdfs.isEmpty }
关键说明:
- 替换拖放类型为
URL.self,直接接收拖拽的文件URL对象 - 用
lastPathComponent从URL中提取完整文件名 - 使用
PDFDocument(url:)方法直接加载文件,比先转Data更高效 - 增加
isFileURL判断,过滤非文件类的拖拽内容
内容的提问来源于stack exchange,提问作者Ronald
相关产品推荐
相关产品推荐

