Я пытаюсь создать приложение для Mac OS X, которое запрашивает у пользователя каталог. Я использую NSOpenPanel, которая срабатывает, когда пользователь нажимает кнопку «Обзор».
Проблема в том, что [NSOpenPanel filenames] устарела, так что теперь я использую функцию URLs. Я хочу разобрать материал, который связан с URL, просто чтобы получить нормальный путь к файлу. Поэтому я попытался fileName = [fileName stringByReplacingOccurrencesOfString:@"%%20" withString:@" "];
, но это дало мне ошибку:
-[NSURL stringByReplacingOccurrencesOfString:withString:]: unrecognized selector sent to instance 0x100521fa0
Вот весь метод:
- (void) browse:(id)sender
{
int i; // Loop counter.
// Create the File Open Dialog class.
NSOpenPanel* openDlg = [NSOpenPanel openPanel];
// Enable the selection of files in the dialog.
[openDlg setCanChooseFiles:NO];
// Enable the selection of directories in the dialog.
[openDlg setCanChooseDirectories:YES];
// Display the dialog. If the OK button was pressed,
// process the files.
if ( [openDlg runModal] == NSOKButton )
{
// Get an array containing the full filenames of all
// files and directories selected.
NSArray* files = [openDlg URLs];
// Loop through all the files and process them.
for( i = 0; i < [files count]; i++ )
{
NSString* fileName = (NSString*)[files objectAtIndex:i];
NSLog(@"%@", fileName);
// Do something with the filename.
fileName = [fileName stringByReplacingOccurrencesOfString:@"%%20" withString:@" "];
NSLog(@"%@", fileName);
NSLog(@"Foo");
[oldJarLocation setStringValue:fileName];
[self preparePopUpButton];
}
}
}
Интересно, что "Foo" никогда не выводится на эту консоль. Это похоже на прерывание метода в строке stringByReplacigOccurencesOfString.
Если я удалю эту строку, приложение запустится и заполнит мое текстовое поле строкой, просто в форме URL, которая мне не нужна.