我有一个 SwiftUI/Catalyst 应用程序,可以通过拖放接收音频/视频文件。
在某个视图上我有 fowling 修饰符,它接受指定的媒体文件。
.onDrop(of: ["public.movie","public.audio"], isTargeted: nil, perform: { providers in
print(providers.first)
let _ = providers.first?.loadObject(ofClass: URL.self, completionHandler: { (url, _) in
print(url)
})
return true
})
当我放下一个文件时,返回的提供程序会打印
可选(<NSItemProvider:0x600002ae4b60> {types =(“com.apple.m4a-audio”,“com.apple.finder.node”)})
看起来不错。但是当我尝试确定被拖放文件的 URL 时,结果总是为 nil。
这段代码有什么问题?
项目提供程序不提供
public.file-url
类型标识符,因此我并不期望您能够URL
从中加载。换句话说,您的应用根本没有提供URL
。如果您想要
URL
,您可以使用将其作为文件加载loadFileRepresentation
,这会将数据的临时副本保存为文件。