我很难在SwiftUI的DropDelegate
中抓取fileURL,当从我的桌面拖动文件到我的应用程序时。
我在NSItemProvider
上使用async loadItem调用,它返回NSSecureCoding
。我认为我可以将结果强制转换为NSURL,但它总是失败。
let url = try await (urlProvider
.loadItem(forTypeIdentifier: UTType.url.identifier) as? NSURL
如果我尝试强制强制转换,我会得到以下错误:
Could not cast value of type 'Foundation.__NSSwiftData' to 'NSURL'.
我在代码的其他地方成功地使用了相同的调用并强制转换为NSDictionary。
在Xcode 13.4, Swift 5中。在我的沙箱功能中,我对用户选择的文件有读访问权限。
有谁能指出我做错了什么吗?谢谢你。我必须转换到Data
,然后从中构建URL
:
if let data = try await urlProvider
.loadItem(forTypeIdentifier: UTType.fileURL.identifier) as? Data {
url = URL(dataRepresentation: data, relativeTo: nil) }