为什么我的NSUserDefault值没有写入?

时间:2011-04-18 04:30:53

标签: iphone ios ipad nsuserdefaults

我正在尝试使用NSUserDefaults来跟踪我的iOS应用中的一些促销数据,但它并没有像我期望的那样工作。这是代码......

 NSString *promoID = [[[self currentPromo] allKeys] objectAtIndex:0];

 if(![[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:@"promoid-%@", promoID]])
 {
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:[NSString stringWithFormat:@"promoid-%@", promoID]];
 .
 .
 .

每次执行此if语句时,都会执行内部代码。这个if语句中的代码不应该只执行一次吗?

非常感谢你的智慧!

2 个答案:

答案 0 :(得分:4)

取决于你再次经历这么快的速度。

NSUserDefaults不会立即同步。如果您想这样做,则需要在设置值后调用[[NSUserDefaults standardUserDefaults] synchronize];

答案 1 :(得分:1)

使用synchronize关键字在NSUserDefaults中检索您的数据

[[NSUserDefaults standardUserDefaults] synchronize];

这将检索并显示数据。