2010-09-03 82 views
0

我想将某些变量的内容存储在文件中。用户或应用程序应该更改该值。如果用户不能读取这个文件的内容,那将是非常好的。在启动时,应用程序读取文件并用内容初始化一些(全局?)变量。将首选项存储在文件中并导入值以初始化变量

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

我该如何管理?

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

如何访问文件的内容?

干杯

回答

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中定义为全局变量。还有一个问题:

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

1

听起来好像是NSUserDefaults的正是你所需要的。它会让你存储URL(作为字符串)和其他基本类型的变量。

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

试试看!它易于使用和可靠。

+0

因为无处不在,它被称为用户偏好。我不需要用户偏好。我需要一个系统偏好。但我认为你是对的。有一件事我还没有发现:我如何创建一个NSUserDefaults“文件”?我可以指定某个plist作为我之前创建的NSUSerDefaults吗? – testing 2010-09-03 13:23:19

+0

我想我可以在Xcode中简单地编辑NSUserDefaults,就像plist一样。但事情并非如此简单。您必须使用命令行工具...您必须编写“默认写入”。但是域名是什么?该域是包标识符。我如何获取包标识符?我只有com.yourcompany。$ {PRODUCT_NAME:rfc1034identifier}。所以我必须改变标识符。我应该输入什么产品名称?什么为rfc1034identifier?为什么不能读出我的项目名称?问题在问题...信息:http://www.cocoadev.com/index.pl?WorkingWithUserDefaults – testing 2010-09-03 13:55:22

0

使用plist。您可以使用-[NSDictionary initWithContentsOfFile:]加载它(您可以像使用-[NSDictionary writeToFile:atomically:]一样容易地将字典保存为plist,尽管听起来不像您需要那样做)。

+0

我也想过一个plist。问题是我想要访问不同类中的值。这意味着我要么每次都要分配plist,要么我写一个包装类,我必须在每个类中包含这个类。所以plists不会是最好的选择。 – testing 2010-09-03 13:39:54

+0

它不会和使用NSUserDefaults不同(它基本上是一个plist的包装器 - 你可以在'Library/Preferences/{bundleID} .plist'中看到它创建的文件)。就包括应用程序包的设置而言,plist是标准。 – Brian 2010-09-03 13:58:36

+0

感谢您的信息。我将使用plist和NSUserDefaults。 – testing 2010-09-03 14:55:28