为什么我的NSUserDefault值未写入?

问题描述

| 我正在尝试使用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语句中的代码不应该只执行一次吗? 非常感谢您的智慧!     

解决方法

取决于您再次执行此操作的速度。 NSUserDefaults不会立即同步。如果要执行此操作,则需要在设置值后调用
[[NSUserDefaults standardUserDefaults] synchronize];
。     ,使用syncnize关键字在NSUserDefaults中检索数据 [[NSUserDefaults standardUserDefaults]同步]; 这将检索并显示数据。