Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NSItemProvider在SwiftUI拖放中加载对象_Swift_Swiftui_Drag And Drop_Ios14_Nsitemprovider - Fatal编程技术网

NSItemProvider在SwiftUI拖放中加载对象

NSItemProvider在SwiftUI拖放中加载对象,swift,swiftui,drag-and-drop,ios14,nsitemprovider,Swift,Swiftui,Drag And Drop,Ios14,Nsitemprovider,我使用SwiftUI中的DropDelegate拖放视图。我正在使用.onDrag视图修改器成功地将数据包装到NSistemProvider中,如果我能够将drop数据作为DropDelegate的存储属性之一,我甚至可以使用.onDrop 我正在尝试使用提供的DropInfo对我的drop数据进行解码。我在dropEntered(info:)delegate方法中更新我的视图,以便用户可以在拖放发生之前预览它们。当我写作时 info.itemProviders.first?.loadObjec

我使用SwiftUI中的DropDelegate拖放视图。我正在使用.onDrag视图修改器成功地将数据包装到NSistemProvider中,如果我能够将drop数据作为DropDelegate的存储属性之一,我甚至可以使用.onDrop

我正在尝试使用提供的DropInfo对我的drop数据进行解码。我在
dropEntered(info:)
delegate方法中更新我的视图,以便用户可以在拖放发生之前预览它们。当我写作时

info.itemProviders.first?.loadObject(...) { reading, error in
...
}
未调用完成处理程序。如果我改为在
performDrop(info:)
delegate方法中编写此闭包,则会调用完成处理程序。为什么只在
performDrop(信息:)
中调用完成处理程序?是否有一种方法可以在执行必要的实时更改时进行拖放预览,而不必在
dropEntered(信息:)
中更改数据模型

我不喜欢在
dropEntered(info:)
中编辑我的数据模型,而且我还不知道如果用户以某种方式取消拖放,它将如何工作。。。也许有一种更好的方法可以让我在
performDrop(info:)
中编辑数据模型


谢谢大家!

需要最少的可复制的例子。这很奇怪。我成功地从macOS上输入的DropEnter解码并更新UI(使用loadItem)。您能出示您的NSItemProvider注册/解码和输入正文吗?