繁体   English   中英

如何在Swift中从NSSavePanel对象获取路径

[英]How to get a path out of an NSSavePanel object in Swift

我一直试图使用NSSavePanel将文本文件保存在用Swift编写的程序中。 唯一的问题是,每次我尝试使用URL属性时,它都有一个nil值。 是的,测试时我选择了一个文件夹,并在输入中输入了文件名。 这是我的代码:

    let saveDialog = NSSavePanel();
    saveDialog.beginWithCompletionHandler() { (result: Int) -> Void in
            if result == NSFileHandlingPanelOKButton {
                let file = NSFileHandle(forWritingToURL: saveDialog.URL!, error: nil)!;
                for match in Globals.matches {
                    if let data = (match.toString() as NSString).dataUsingEncoding(NSUTF8StringEncoding) {
                        file.writeData(data);
                    }
                }
            }
        }
    // other setup code not shown

当我运行此代码时,我总是在

let file = NSFileHandle(forWritingToURL: saveDialog.URL!, error: nil)!;

线。 我可以帮忙吗? 我究竟做错了什么?

检查文档NSFileHandle(forWritingToURL:error:) ,它说:

初始化的文件句柄对象;如果url中没有文件,则为nil。

因此,这仅在文件已存在的情况下有效。 这可能不是您想要的。

看来NSFileHandle根本无法创建新文件,因此在尝试打开文件之前,我将使用以下内容:

NSFileManager.defaultManager()
    .createFileAtPath(saveDialog.URL.path, contents: NSData(), attributes: nil)

这将创建一个空文件,然后您可以打开该文件并向其中写入数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM