【问题标题】:NSUserDefaults Settings Bundle PlistNSUserDefaults 设置捆绑列表
【发布时间】:2012-02-04 17:20:01
【问题描述】:

我有一个应用程序在从 appDelegate 的 appDidFinishLoading 方法加载时使用我应该存储在 NSUserDefaults 设置根 Plist 中的 url 值检查文件:

NSString *pathStr = [[NSBundle mainBundle] bundlePath];
NSString *settingsBundlePath = [pathStr stringByAppendingPathComponent:@"Settings.bundle"];
NSString *finalPath = [settingsBundlePath stringByAppendingPathComponent:@"Root.plist"];
NSDictionary *settingsDict = [NSDictionary dictionaryWithContentsOfFile:finalPath];
NSArray *prefSpecifierArray = [settingsDict objectForKey:@"PreferenceSpecifiers"];

NSDictionary *prefItem;
for (prefItem in prefSpecifierArray){
    NSString *keyValueStr = [prefItem objectForKey:@"Key"];
    if ([keyValueStr isEqualToString:kFirstNameKey]){
        nsUserDefURL = [prefItem objectForKey:@"DefaultValue"];
    }
        if ([keyValueStr isEqualToString:kSecondNameKey]){
        NSLog(@"You are using local data:%@",[prefItem objectForKey:@"DefaultValue"]);
    }
}
NSLog(@" this is the url == %@", nsUserDefURL);

// since no default values have been set (i.e. no preferences file created), create it here     
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:nsUserDefURL,kFirstNameKey,@"YES",kSecondNameKey,nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
[[NSUserDefaults standardUserDefaults] synchronize];

有一些静态:

NSString *kFirstNameKey = @"url";
NSString *kSecondNameKey = @"Web DataSource";

当我 NSLog nsUserDefURL 时,我仍然在设置 plist 中获得默认值。我进入了应用程序的设置(不知道我可以在模拟器中这样做)并修改了 url 字段中的值,但我仍然得到了 test2.xml 值,它是设置根目录中的默认占位符值列表。

这里是列表:

或者是设置包在 Xcode 模拟器上不起作用?

【问题讨论】:

    标签: plist nsuserdefaults


    【解决方案1】:

    您需要明确保存它。例如,如果 strFirstName 是用户修改的值,那么您可以将其保存到应用程序设置中

     NSUserDefaults* ud = [NSUserDefaults standardUserDefaults];
     [ud setObject:strFirstName forKey:kFirstNameKey];
     [ud sychronize];
    

    【讨论】:

      【解决方案2】:

      原来我错过了这一行:

      nsUserDefURL = [[NSUserDefaults standardUserDefaults] stringForKey:kFirstNameKey];  
      

      但这只会读取每次启动的默认值。它不会在应用设置中保存用户修改的值。为什么没有保存该值?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-15
        • 2023-03-28
        • 2012-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多