Подтвердить что ты не робот

Получение текущего каталога в Objective C

Я пытаюсь получить текущий каталог, но он дает мне путь к папке DEBUG, как я могу получить путь к текущему каталогу. Я использую следующий код.

NSFileManager *filemgr;
NSString *currentpath;

filemgr = [[NSFileManager alloc] init];

currentpath = [filemgr currentDirectoryPath];
4b9b3361

Ответ 1

currentDirectoryPath возвращает текущий рабочий каталог программы. Если вы запустили его из Xcode в режиме отладки, текущий каталог программы является папкой Debug.

Ответ 2

Развивая дальше в этом. Текущий рабочий каталог и каталог запуска могут отличаться! Возьмите этот пример, приложение запускается из домашнего каталога (~).

Library/Developer/Xcode/DerivedData/MyApp-ehwczslxjxsxiob/Build/Products/Debug/MyApp.app/Contents/MacOS/MyApp -param value
NSString *p1 = [[NSFileManager defaultManager] currentDirectoryPath];
// p1 = ~/Library/Containers/com.MyApp.beta/Data
NSString *p2 = [[NSProcessInfo processInfo] environment][@"PWD"];
// p2 = ~

В зависимости от ситуации вам может понадобиться один или другой. В моем случае я хочу предоставить CLI, который принимает аргументы пути, которые могут быть относительно текущего рабочего каталога в оболочке.