2

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を返すのか誰かが考えていますか?

4

0 に答える 0