gpt4 book ai didi

macos - 如何在 SwiftUI 中获取已删除文件的文件名?

转载 作者:行者123 更新时间:2023-12-01 10:26:56 24 4
gpt4 key购买 nike

我一直在尝试找出如何将图像的文件名放入 SwiftUI View 中。

代码片段如下:

struct MainView: View, DropDelegate {

@ObservedObject var userState : UserState

var body : some View {
Group {
if (self.userState.editing) {
BlackoutView()
} else {
DropView()
}
}
.frame(minWidth: 320, idealWidth: 640, maxWidth: .infinity, minHeight: 240, idealHeight: 480, maxHeight: .infinity, alignment: .center)
.onDrop(of: [(kUTTypeImage as String), "public.pdf"], delegate: self)
}

func dropUpdated(info: DropInfo) -> DropProposal? {
let proposal = DropProposal.init(operation: .copy)
return proposal
}

func performDrop(info: DropInfo) -> Bool {
print("perform drop")
userState.editing = true
return true
}

}


当我将图像拖放到应用程序上时,它会运行 performDrop .如何获得拖放到应用程序上的图像的文件名?

它在 macOS 上运行。

最佳答案

花了一个多小时在 apis 上挣扎(文档几乎不存在),这对我有用:

// The onDrop registration
.onDrop(of: [(kUTTypeFileURL as String)], delegate: self)

...
func performDrop(info: DropInfo) -> Bool {

guard let itemProvider = info.itemProviders(for: [(kUTTypeFileURL as String)]).first else { return false }

itemProvider.loadItem(forTypeIdentifier: (kUTTypeFileURL as String), options: nil) {item, error in
guard let data = item as? Data, let url = URL(dataRepresentation: data, relativeTo: nil) else { return }
// Do something with the file url
// remember to dispatch on main in case of a @State change
}

return true
}

请注意,我省略了任何验证,因此此代码从任何已删除的文件中获取第一个 url

关于macos - 如何在 SwiftUI 中获取已删除文件的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58580471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com