You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 20:32:08