[英]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.