【问题标题】:SWIFT: NSURL Always either Nil or unusableSWIFT:NSURL 总是 Nil 或不可用
【发布时间】:2015-10-03 07:00:17
【问题描述】:

所以在我的 Swift 应用程序中,我有一个选择文件夹/驱动器的函数 - 然后我想使用 NSURL 作为字符串。但是-当我打印 NSURL 时,它显示为“可选(文件:///(这里的东西)”但是当我将其设为字符串时,它显示为 Nil。我做错了什么吗? 代码如下

@IBAction func selectDrive(sender: AnyObject) {
    var openPanel = NSOpenPanel()
    openPanel.allowsMultipleSelection = false
    openPanel.canChooseDirectories = true
    openPanel.canCreateDirectories = true
    openPanel.canChooseFiles = false
    openPanel.beginWithCompletionHandler { (result) -> Void in
        if result == NSFileHandlingPanelOKButton {
            println(openPanel.URL)
            self.url = openPanel.URL!

            var loc = String(contentsOfURL: self.url)
            println("Location is at \(loc)")
            // var str = String(system("diskutil info \(loc) | grep UUID:"))

        }

    }
}

我还在顶部声明了以下内容

var url = NSURL()
@IBOutlet weak var driveLabel: NSTextField!

任何帮助将不胜感激。昨晚我花了几个小时试图让控制台输出作为字符串返回,尝试将 NSURL 转换为字符串,尝试删除整个应用程序......

【问题讨论】:

    标签: macos swift nsurl


    【解决方案1】:

    NSOpenPanel 总是返回带有 file:// 方案的 url,您可以使用其 path 属性获取字符串表示

    @IBAction func selectDrive(sender: AnyObject) {
        var openPanel = NSOpenPanel()
        openPanel.allowsMultipleSelection = false
        openPanel.canChooseDirectories = true
        openPanel.canCreateDirectories = true
        openPanel.canChooseFiles = false
        openPanel.beginWithCompletionHandler { (result) -> Void in
            if result == NSFileHandlingPanelOKButton {
    
                self.url = openPanel.URL!
                println("Location is at \(self.url.path!)")
            }
        }
    }
    

    【讨论】:

    • 非常感谢!!这就像一个魅力。我能问一下你在哪里找到的吗?我正在寻找一个列出方法/变量的 Java API 样式页面,但我发现的只是带有 .URL 或 .URLs 的 Stackoverflow 问题而且我认为我以前不必输入 self 这么多次。实际上。我不认为我必须明确地说自我
    • 实际上首先要看的是文档。在 Xcode 选项中单击符号以获取带有其声明的弹出框。单击弹出窗口中的任何链接会打开一个包含完整文档的新窗口。通常你需要 self 在像完成处理程序这样的闭包中。编译器会告诉你在哪里需要它。
    猜你喜欢
    • 2017-04-23
    • 2017-07-09
    • 2016-10-12
    • 2018-03-05
    • 2012-05-29
    • 1970-01-01
    • 2020-05-29
    • 2019-12-22
    • 1970-01-01
    相关资源
    最近更新 更多