これは、sosbornの答えを補足するものであり、代替品ではありません。
runModalForTypes:
は非推奨であり、正しい置換はですrunModal
(または、setAllowedFileTypes:
その後に続きrunModal
ますが、この場合、型にnilを渡します)。
directory
も非推奨であり、正しい置換はdirectoryURL
です。(実際に、NSString
ではなくパスを返す必要がある場合はNSURL
、単に返し[[gitDir directoryURL] path]
ます。)
ただし、実際に必要なのはユーザーにディレクトリの選択を求めることである場合、ユーザーにファイルの選択を求め、次にそのファイルが含まれるディレクトリを返すことです。これを行うには、とを呼び出してsetCanChooseFiles
から、URLを呼び出して、ユーザーが選択したディレクトリを取得します。NO
setCanChooseDirectories
YES
runModal
また、 (またはrunModalForTypes:
)の結果を無視しています。コンパイラは未使用の変数「ger」について警告していると確信しています。警告を無視するだけではいけません。ユーザーがパネルをキャンセルした場合は、[OK]をクリックしたものとして扱い、キャンセルしたときにたまたま入っていたディレクトリを選択します。
これは、選択したディレクトリのURLを返す、またはユーザーがキャンセルした場合(またはなんとかして何も選択しなかった場合)はnilを返す、より良い実装です。繰り返しますが、が必要な場合はNSString
、returnステートメントに「path」呼び出しを追加するだけです。
-(NSURL *)get {
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setAllowsMultipleSelection:NO];
[panel setCanChooseDirectories:YES];
[panel setCanChooseFiles:NO];
if ([panel runModal] != NSModalResponseOK) return nil;
return [[panel URLs] lastObject];
}