如何使用 NSItemProvider 的新异步加载项方法加载 URL?



我很难在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) }

相关内容

  • 没有找到相关文章

最新更新