如何使用 NSItemProvider 的新 Async loadItem 方法加载 URL?
How do I load a URL using NSItemProvider's new Async loadItem method?
将文件从我的桌面拖动到我的应用程序时,我在 SwiftUI 的 DropDelegate
中抓取文件 URL 时遇到困难。
我正在 NSItemProvider
上使用异步 loadItem 调用,其中 returns 和 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。
这是在Xcode13.4,Swift5。
我在我的沙盒功能中具有对用户选择的文件的读取权限。
谁能帮忙指出我做错了什么?
谢谢。
我必须转换为 Data
,然后从中构建 URL
:
if let data = try await urlProvider
.loadItem(forTypeIdentifier: UTType.fileURL.identifier) as? Data {
url = URL(dataRepresentation: data, relativeTo: nil) }
将文件从我的桌面拖动到我的应用程序时,我在 SwiftUI 的 DropDelegate
中抓取文件 URL 时遇到困难。
我正在 NSItemProvider
上使用异步 loadItem 调用,其中 returns 和 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。
这是在Xcode13.4,Swift5。 我在我的沙盒功能中具有对用户选择的文件的读取权限。
谁能帮忙指出我做错了什么? 谢谢。
我必须转换为 Data
,然后从中构建 URL
:
if let data = try await urlProvider
.loadItem(forTypeIdentifier: UTType.fileURL.identifier) as? Data {
url = URL(dataRepresentation: data, relativeTo: nil) }