【发布时间】:2016-07-19 08:55:00
【问题描述】:
我正在使用Key Value Coding 将一些对象保存到文件中。我希望隐藏已保存文件的扩展名(或至少隐藏,除非 Finder → 首选项 → 高级“显示所有文件扩展名”中的值为 true),但我似乎无法让它工作。
我正在像这样保存文件:
let saveDialog = NSSavePanel()
saveDialog.allowedFileTypes = ["purr"]
saveDialog.beginWithCompletionHandler() { (result: Int) -> Void in
if result == NSFileHandlingPanelOKButton {
NSFileManager.defaultManager()
.createFileAtPath(saveDialog.URL!.path!, contents: NSData(), attributes: [NSFileExtensionHidden: NSNumber(bool: true)])
let _ = NSKeyedArchiver.archiveRootObject(safePhrases, toFile: saveDialog.URL!.path!)
}
}
return saveDialog.URL
但在 Finder 中查看保存的文件时,扩展名始终可见。我该如何解决这个问题?
【问题讨论】:
-
你试过
NSFileManager的setAttributes:ofItemAtPath:error:吗? -
成功了!你想写一个答案还是我应该?谢谢!
do { try NSFileManager.defaultManager().setAttributes([NSFileExtensionHidden: NSNumber(bool: true)], ofItemAtPath: saveDialog.URL!.path!) } catch _{ Swift.print("Unable to hide extension") } -
我对 Swift 不熟悉,我觉得还是你做比较好。
标签: swift cocoa nsfilemanager key-value-coding nssavepanel