Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何在NSSavePanel中预设文件名?_Cocoa_Macruby - Fatal编程技术网

Cocoa 如何在NSSavePanel中预设文件名?

Cocoa 如何在NSSavePanel中预设文件名?,cocoa,macruby,Cocoa,Macruby,NSSavePanel过去有一个runModalForDirectory:file:方法,它允许您为保存面板预设目录和文件名。但这在10.6中被弃用了 创建NSSavePanel时,如何在不使用不推荐的方法的情况下预设文件名?在运行保存面板之前,使用10.6中添加的setNameFieldStringValue:方法。如果还想设置默认目录,则需要setDirectoryURL:方法,该方法也在10.6中添加 NSString *defaultDirectoryPath, *defaultName

NSSavePanel过去有一个runModalForDirectory:file:方法,它允许您为保存面板预设目录和文件名。但这在10.6中被弃用了


创建NSSavePanel时,如何在不使用不推荐的方法的情况下预设文件名?

在运行保存面板之前,使用10.6中添加的
setNameFieldStringValue:
方法。如果还想设置默认目录,则需要
setDirectoryURL:
方法,该方法也在10.6中添加

NSString *defaultDirectoryPath, *defaultName;
NSSavePanel *savePanel;
...
[savePanel setNameFieldStringValue:defaultName];
[savePanel setDirectoryURL:[NSURL fileURLWithPath:defaultDirectoryPath]];
[savePanel runModal];

一开始我没有注意到一个方法,NSSavePanel#setNameFieldStringValue,它设置文件名

以下是macruby语法的完整示例:

def run_save_settings_dialog(sender)
  dialog = NSSavePanel.savePanel
  dialog.title = "Save Settings"
  dialog.canCreateDirectories = true
  dialog.showsHiddenFiles = true
  dialog.nameFieldStringValue = "MyFile"
  dialog.canChooseFiles = true
  dialog.canChooseDirectories = false
  dialog.allowsMultipleSelection = false
  dialog.setDirectoryURL NSURL.fileURLWithPath("some/path")
  if dialog.runModal == NSFileHandlingPanelOKButton
    save_settings(dialog.URL)
  end
end

def save_settings(file_url)
  File.open(file_url.path, 'w') {|f| f.write "Stuff" }
end

注意!!!:[NSURL fileURLWithPath:]有效。。。。。。。。。。。。。。。。。。。。。。。。。。。。。[NSURL URLWithString:]不起作用