Ссылка на $ HOME или ~ в Info.plist - PullRequest
       7

Ссылка на $ HOME или ~ в Info.plist

1 голос
/ 05 октября 2010

Мне нужно установить переменную окружения для моего приложения, когда оно запускается из Finder.Это местоположение каталога.Путь относительно $ HOME.Я использую файл Info.plist для установки этой переменной среды.Однако я не могу заставить его взять $ HOME или ~.Можно ли это сделать?

т.е. я хочу что-то вроде этого:

MYAPPDIR = ~ / myappname

Да, я использую редактор .plist.Это работает, то есть мое приложение находит его, если я жестко закодировал полный путь следующим образом:

MYAPPDIR = / Users / myname / myappname

1 Ответ

0 голосов
/ 05 октября 2010

Зачем вам это нужно?Если вы действительно хотите установить переменную среды в своем приложении, сделайте следующее:

 NSString* expanded=[@"~/myappname" stringByExpandingTildeInPath];
 setenv("MYAPPDIR",[expanded UTF8String],1);

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

Кроме того, никогда не сохраняет файл в видимом для пользователя, не настраиваемом пользователем месте .

В OS X приложения превращаются в .app пакеты, чтобы пользователь мог свободно перемещать их.

Если вам нужно получить текущую позицию приложения, просто используйте

NSString*appPath=[[NSBundle mainBundle] bundlePath];

Если вы хотите сохранить большой файл где-нибудь, создайте каталог внутри ~/Library/Application Support/ с именем

~/Library/Application Support/yourappname/

и сохраните файлы внутри.Если вам просто нужно сохранить несколько данных, используйте NSUserDefaults .Он автоматически сохраняет данные в

~/Library/Preferences/com.yourcompany.yourapp.plist

и повторно загружает контент при повторном запуске приложения.Просто сделайте

[[NSUserDefaults standardUserDefaults] setObject:@"boo" forKey:@"bar"];

и восстановите после перезапуска вашего приложения, используя

NSString* boo=[[NSUserDefaults standardUserDefaults] stringForKey:@"bar"];

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...