保存文件但隐藏文件扩展名 - Cocoa with Key Value Coding
Save file but hide file extension - Cocoa with Key Value Coding
我正在使用 Key Value Coding
将一些对象保存到文件中。我希望隐藏已保存文件的扩展名(或者至少隐藏,除非 Finder → Preferences → Advanced "Show All File Extensions" 中的值是 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中查看保存的文件时,扩展名总是可见的。我该如何解决这个问题?
根据 Willeke 的建议,我在写入文件后设置属性,使用 NSFileManager
的 setAttributes:ofItemAtPath:error
。
do { try NSFileManager.defaultManager().setAttributes
([NSFileExtensionHidden: NSNumber(bool: true)], ofItemAtPath: saveDialog.URL!.path!) }
catch _{ Swift.print("Unable to hide extension") }
我正在使用 Key Value Coding
将一些对象保存到文件中。我希望隐藏已保存文件的扩展名(或者至少隐藏,除非 Finder → Preferences → Advanced "Show All File Extensions" 中的值是 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中查看保存的文件时,扩展名总是可见的。我该如何解决这个问题?
根据 Willeke 的建议,我在写入文件后设置属性,使用 NSFileManager
的 setAttributes:ofItemAtPath:error
。
do { try NSFileManager.defaultManager().setAttributes
([NSFileExtensionHidden: NSNumber(bool: true)], ofItemAtPath: saveDialog.URL!.path!) }
catch _{ Swift.print("Unable to hide extension") }