先全局定义NSUserDefaults的宏定义
#define LCDUserDefaultsGET(key) [[NSUserDefaults standardUserDefaults] objectForKey:key] // 取
#define LCDUserDefaultsSET(object,key) [[NSUserDefaults standardUserDefaults] setObject:object forKey:key] // 写
#define LCDUserDefaultsSynchronize [[NSUserDefaults standardUserDefaults] synchronize] // 存
#define LCDUserDefaultsRemove(key) [[NSUserDefaults standardUserDefaults] removeObjectForKey:key] // 删
代码:
LCDUserDefaultsSET(tempObject.id, MyId);
LCDUserDefaultsSET(tempObject.mobile, MyMobile );
LCDUserDefaultsSET(userName, Account );
LCDUserDefaultsSET(pwdStr, Password );
LCDUserDefaultsSET(tempObject.name, MyName);
LCDUserDefaultsSynchronize;
LCDUserDefaultsGET(MyId)
用到NSUserDefault的时候,[[NSUserDefaults standardUserDefaults] setObject:tempObject.id forKey:@"MyID"] ;并不算存储好了,
重启动程序,关键字MyID对应的是空,
那是忘了写到disk里面了!需要[[NSUserDefaults standardUserDefaults] synchronize];
注意:
UserDefaults不是立即写入,而是根据时间戳定时的把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了。出现以上问题。可以通过调用synchornize方法强制写入。