在Info.plist中引用$ HOME或〜

时间:2010-10-04 23:30:51

标签: macos environment-variables

我需要在从Finder启动时为我的应用程序设置一个环境变量。它是目录的位置。该路径相对于$ HOME。我正在使用Info.plist文件来设置此环境变量。但是,我不能把它带到$ HOME或〜。可以这样做吗?

即。我想要这样的东西:

MYAPPDIR =〜/ myappname

是的,我正在使用.plist编辑器。它确实有效,即我的应用程序找到它,如果我硬编码这样的完整路径:

MYAPPDIR = /用户/ MYNAME / myappname

1 个答案:

答案 0 :(得分: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"];