【问题标题】:Is it possible to read and update settings plist是否可以读取和更新设置 plist
【发布时间】:2011-11-07 10:41:54
【问题描述】:

只是一个简单的问题。我有点不确定。

当我将 Settings.plist 添加到我的 Objective C iPhone 项目并从中读取设置时。是否可以更新此文件中的设置?或者这个文件是只读的吗?我应该在另一个位置创建一个副本吗:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

并在发布时检查它是否存在?

【问题讨论】:

  • 请参阅 [使用新版本的应用更新和更改设置 plist 文件][1] 链接。 [1]:stackoverflow.com/questions/1609305/…
  • 您要问的是哪个 plist ?它是一个项目的 plist (-info.plist)???
  • 在我看来,我可能不会更改项目的 plist。我现在将其实现为具有默认值,并使用运行时创建的用户设置 plist 覆盖它

标签: iphone objective-c ios


【解决方案1】:

您无法通过 Xcode 编辑应用中包含的文件,因此您可以将其复制到用户的文档文件夹中。

但是,由于您对设置 plist 文件感兴趣,我建议您使用 NSUserDefaults 保存设置,它会自动保存 .plist 文件:在应用程序的委托中 applicationDidFinishLoading 写入

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults boolForKey:@"firstRunComplete"]) {
    [defaults setObject:optionOne forKey:@"optionOne"]; //replace
    [defaults setObject:optionTwo forKey:@"optionTwo"]; //replace
    [defaults setBool:YES forKey:@"firstRunComplete"];
    [defaults synchronize];
}

当你想改变其中一个选项时

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:optionOne forKey:@"optionOne"]; //replace
[defaults setObject:optionTwo forKey:@"optionTwo"]; //replace
[defaults synchronize];

您也可以使用此方法编辑 plist 文件:

NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
[plistDict writeToFile:filePath atomically: YES];

【讨论】:

    猜你喜欢
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 2021-05-13
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多