当此URL扩展名作为面板运行时,它无法返回URL,似乎绕过了补全:
func saveAs() -> URL? {
let savePanel = NSSavePanel()
var saveAsURL : URL? = nil
savePanel.canCreateDirectories = true
savePanel.nameFieldStringValue = self.lastPathComponent
savePanel.directoryURL = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first!
if let keyWindow = NSApp.keyWindow {
savePanel.beginSheetModal(for: keyWindow, completionHandler: { result in
/*if result == .OK {*/ saveAsURL = savePanel.url //}
})
}
else
{
NSApp.activate(ignoringOtherApps: true)
if savePanel.runModal() == .OK {
saveAsURL = savePanel.url
}
}
Swift.print("saveAsURL => \(saveAsURL.debugDescription)")
return saveAsURL
}
但作为独立窗口运行,效果很好。还有另一个相关的答案here,但此处的用法有所不同:即>
guard let saveAsURL = URL.init(string: "download.dmg").saveAs() else { return }
我认为用户取消的位置将推断处理应结束。
当此URL扩展名作为面板运行时,它无法返回URL,似乎绕过了完成:func saveAs()-> URL? {let savePanel = NSSavePanel()var saveAsURL:URL? = nil ...
当您说.runModal
时,您的代码做了一件非常非常奇怪的事情:它停止
我的建议是:完成处理程序。