关于NSUserDefaults

存储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, 里面还有很多知识点

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容