2010-10-04 1 views
0

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

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

MYAPPDIR = ~/myappname

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

MYAPPDIR =/Users/MyName/myappname

ответ

0

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

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"]; 

и т.д.

+0

Я ценю тирады. Я новичок в Mac и рад получить совет. – JJ3

 Смежные вопросы

  • Нет связанных вопросов^_^