URL saveAs扩展名

问题描述 投票:0回答:2

当此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 ...

swift url nssavepanel
2个回答
0
投票

当您说.runModal时,您的代码做了一件非常非常奇怪的事情:它停止


0
投票

我的建议是:完成处理程序。

© www.soinside.com 2019 - 2024. All rights reserved.