[英]Storing values from NSUserDefaults in Settings bundle
我试图找出如何从NSDefaults保存/存储我的值,以便当我退出应用程序时,它们存储在Settings.bundle中。 这就是我在做的......
NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:@"M1", @"IDMissiles",
@"G2", @"IDGuns",
@"B3", @"IDBombs",
@"KM", @"IDDistance", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:settings];
如果我执行以下操作,则值将从NSUserDefaults正确打印出来...
NSLog(@"IDMissiles: %@", [userDefaults stringForKey:@"IDMissiles"]);
NSLog(@"IDGuns : %@", [userDefaults stringForKey:@"IDGuns"]);
NSLog(@"IDBombs : %@", [userDefaults stringForKey:@"IDBombs"]);
NSLog(@"IDDistance: %@", [userDefaults stringForKey:@"IDDistance"]);
但是......每次运行应用程序时,NSUserDefaults中的值都以(null)开头,我以为做[[NSUserDefaults standardUserDefaults] synchronize];
将存储下次运行应用程序时的值,但没有这样的运气。
而不是使用
[[NSUserDefaults standardUserDefaults] registerDefaults:settings];
尝试这个:
[[NSUserDefaults standardUserDefaults] setObject:settings forKey:@"settings"];
然后,从这样的默认值获取:
NSLog(@"IDMissiles:%@[[[NSUserDefaultsstandardUserDefaults]objectForKey:@"settings"]objectForKey:@"IDMissiles"]);
我在使用settings.bundle时发现的一件事是,在您实际打开设置窗格之前,没有任何值被初始化。 您可以在此处保存默认值,但在打开设置之前它们将返回nil。
我不确定当你尝试在那里保存值但是从未打开设置窗格时是否会发生这种情况。
如果您没有使用设置窗格,则不希望使用registerDefaults选项。
试试这个。
[[NSUserDefaults standardDefaults] setObject:@"M1" forKey:@"IDMissiles"];
// set remaining values
[[NSUserDefaults standardDefaults] synchronize]; // this really only needs to be called if you plan on accessing values right away, otherwise they are saved automatically after the next run loop
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[NSUserDefaults removeObjectForKey:@"userDefaults"];
[userDefaults setObject:[settings objectForKey:@"mainData"] forKey:@"userDefaultsValue"];
[userDefaults synchronize];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.