Просмотрите каталог из пользовательского интерфейса и выберите файл, получите местоположение файла и прочитайте его содержимое в строковой переменной для приложения Mac OS в Objective C.

То, что я хочу, очень похоже на folderBrowsingDialog и folderBrowsingDialog.selectedPath в C#.

Я хочу создать приложение для Mac OS (задача C), в котором пользователь может просматривать каталог из пользовательского интерфейса и выбирать файл, получать местоположение файла и читать его содержимое в строковой переменной. Какой компонент пользовательского интерфейса следует использовать для просмотра и чтения местоположения файла?

Я понимаю, что для работы с файлами мне нужно работать с NSFileManager. Но как выполнить первую часть? Есть ли хорошая документация по программированию пользовательского интерфейса приложения какао для Mac OS для выполнения задачи?

Здесь есть вопрос, похожий на этот, но не обсуждать часть пользовательского интерфейса.


person Faysal    schedule 03.07.2017    source источник
comment
Используйте NSOpenPanel для просмотра и получения URL-адреса файла. Затем, например, загрузите содержимое с помощью NSData/NSString.   -  person Eric Aya    schedule 03.07.2017


Ответы (1)


Вот простой пример того, как это можно сделать:

- (IBAction)buttonAction:(id)sender {
    NSOpenPanel *openPanel = [NSOpenPanel new];
    openPanel.canChooseFiles = YES;
    openPanel.canChooseDirectories = NO;
    openPanel.allowsMultipleSelection = YES;
    [openPanel beginWithCompletionHandler:^(NSInteger result) {
        if (result == NSFileHandlingPanelOKButton) {
            for (NSURL* fileURL in openPanel.URLs) {
                NSData *fileContent = [NSData dataWithContentsOfURL:fileURL];
                NSString* stringFileContent = [[NSString alloc] initWithData:fileContent encoding:NSUTF8StringEncoding];
                NSLog(@"File content: %@", stringFileContent);
            }
        }
    }];
}
person toma    schedule 03.07.2017
comment
Вы можете принять мой пост в качестве ответа, если он сработал для вас. - person toma; 04.07.2017