存储BOOL
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"loginStatus"];
取值
BOOL isLogin = [[NSUserDefaults standardUserDefaults] boolForKey:@"loginStatus"];
if (isLogin) {
NSLog(@"yes");
}else{
NSLog(@"no");
}
感谢https://segmentfault.com/q/1010000002633675
判断是否是第一次启动
方法一、在didFinishLaunchingWithOptions方法中加入如下代码:
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]){
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"];
//第一次启动
}else{
//不是第一次启动了
}
方法二、判断app是否第一次启动或者更新后第一次启动
#define LAST_RUN_VERSION_KEY @"last_run_version_of_application"
- (BOOL) isFirstLoad{
NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *lastRunVersion = [defaults objectForKey:LAST_RUN_VERSION_KEY];
if (!lastRunVersion) {
[defaults setObject:currentVersion forKey:LAST_RUN_VERSION_KEY];
return YES;
}
else if (![lastRunVersion isEqualToString:currentVersion]) {
[defaults setObject:currentVersion forKey:LAST_RUN_VERSION_KEY];
return YES;
}
return NO;
}
第二种方法试了是否是第一次安装, 是可行的, 其他有时间再说
感谢http://blog.csdn.net/loving_ios/article/details/50435840
即时写入
通过官方文档可以了解到,UserDefaults是根据时间戳定时的把缓存中的数据写入本地磁盘,而非即时写入。所以调用set方法之后数据有可能还没有写入磁盘,应用程序就已经终止了。保险期间,我们在对重要的数据保存时使用synchornize方法强制写入。但是也要注意,不用频繁的使用synchornize
看NSUserDefaults的头文件,就会发现,其实还有另外一个方法:synchronize,数据即时写入
//存入数据
NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
[defaults setObject:@"111" forKey:@"test"];
//把数据写到硬盘上
[defaults synchronize];
感谢http://www.mamicode.com/info-detail-137868.html, 里面还有很多知识点