将首选项存储在文件中并导入值以初始化变量

时间:2010-09-03 12:48:22

标签: iphone objective-c cocoa-touch xcode

我想将一些变量的内容存储在一个文件中。用户和应用程序应更改该值。如果用户无法读取此文件的内容,那将会很棒。启动时,应用程序读取文件并使用内容初始化一些(全局?)变量。

该文件应包含一些值,如服务器URL等。这可能会改变,但我只想管理首选项文件而不是更新源代码。例如,在更新时,只会交换首选项文件。

我该如何管理?

我认为NSUserDefaults不适用于此类问题。我应该使用plist还是普通的txt文件?

如何访问文件内容?

干杯

3 个答案:

答案 0 :(得分:1)

听起来像NSUserDefaults就是你所需要的。它将允许您存储URL(作为字符串)和其他基本类型的变量。

为什么你认为NSUserDefaults不是正确的解决方案?

试一试!它易于使用且可靠。

答案 1 :(得分:0)

使用plist。您可以使用-[NSDictionary initWithContentsOfFile:]加载它(您可以使用-[NSDictionary writeToFile:atomically:]轻松地将字典保存到plist,但听起来并不像您需要这样做。)

答案 2 :(得分:0)

所以我将使用的解决方案是加载一个plist文件作为我的NSUserDefaults的默认值:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"plist"];
NSDictionary *settingsDict = [NSDictionary dictionaryWithContentsOfFile:filePath];
[[NSUserDefaults standardUserDefaults] registerDefaults:settingsDict];
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];

NSString *serverURL = [settings stringForKey:@"ServerURL"];
NSLog(@"%@", serverURL);

取自iPhone App : Where do I put a config file?

所以我将同时使用plist和NSUserDefaults。设置我将在main.m中定义为全局变量。一个问题仍然存在:

如何区分用户默认值和系统默认值?