首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NSItemProvider的新异步loadItem方法加载URL?

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

Stack Overflow用户
提问于 2022-05-20 14:49:53
回答 1查看 424关注 0票数 0

当我将一个文件从我的桌面拖到我的应用程序中时,我在DropDelegate in SwiftUI中抓取一个文件时遇到了困难。

我在NSItemProvider上使用异步NSSecureCoding调用,它返回一个NSSecureCoding。我以为我可以将结果转换为NSURL,但总是失败。

代码语言:javascript
复制
let url = try await (urlProvider
    .loadItem(forTypeIdentifier: UTType.url.identifier) as? NSURL

如果我试图强制强制转换,则会得到以下错误:

代码语言:javascript
复制
Could not cast value of type 'Foundation.__NSSwiftData' to 'NSURL'.

我正在成功地使用相同的调用,并将其转换到代码中的其他地方的NSDictionary。

这是在Xcode 13.4,Swift 5。我已经阅读访问用户选择的文件在我的沙箱功能。

有人能帮我指出我做错了什么吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-23 13:08:54

我必须转换为Data,然后从它构造URL

代码语言:javascript
复制
if let data = try await urlProvider
    .loadItem(forTypeIdentifier: UTType.fileURL.identifier) as? Data {
    url = URL(dataRepresentation: data, relativeTo: nil) }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72320926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档