我有一些代码可以在 NSSavePanel 中选择没有扩展名的名称,我很久以前就离开了网络,当时似乎工作正常。我只是重用了代码,现在失败了。错误是“[mySavePanel fieldEditor: NO forObject: nil]”返回 nil。如果我将“NO”更改为“YES”,它会返回一个 NSText 项,但它不是 NSSavePanel 中的名称编辑器。
NSSavePanel *mySavePanel = [NSSavePanel savePanel];
[mySavePanel setTitle: @"Restore File"];
[mySavePanel setMessage: @"Select a location and name to restore the file as:"];
[mySavePanel setNameFieldStringValue: currentRecord.originalName];
NSText *editor = [mySavePanel fieldEditor: NO forObject: nil];
if (editor)
{
NSString *nameFieldString = [mySavePanel nameFieldStringValue];
NSString *nameFieldExt = [nameFieldString pathExtension];
if (nameFieldExt != nil)
{
NSInteger newLength = [nameFieldString length] - [nameFieldExt length] - 1;
[editor setSelectedRange: NSMakeRange(0, newLength)];
}
}
这里有点难过,有人知道为什么它会返回 nil 吗?