これは、sosbornの答えを補足するものであり、代替品ではありません。
runModalForTypes:は非推奨であり、正しい置換はですrunModal(または、setAllowedFileTypes:その後に続きrunModalますが、この場合、型にnilを渡します)。
directoryも非推奨であり、正しい置換はdirectoryURLです。(実際に、NSStringではなくパスを返す必要がある場合はNSURL、単に返し[[gitDir directoryURL] path]ます。)
ただし、実際に必要なのはユーザーにディレクトリの選択を求めることである場合、ユーザーにファイルの選択を求め、次にそのファイルが含まれるディレクトリを返すことです。これを行うには、とを呼び出してsetCanChooseFilesから、URLを呼び出して、ユーザーが選択したディレクトリを取得します。NOsetCanChooseDirectoriesYES
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];
}