ios数据永久存储之----NSUserDefaults
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios数据永久存储之----NSUserDefaults相关的知识,希望对你有一定的参考价值。
我们在开发app时不可避免的会在本地存储一些数据,NSUserDefaults就是系统提供的一个用来数据存储的类,本片文章就来介绍一些NSserdefazults的用法。
详细内容:https://my.oschina.net/u/1245365/blog/294449
首先对于新手来说NSUserdefaults到底是个什么东东呢???
NSUserDefaults 是ios系统提供的一个单例,在整个程序中只有一个实例对象,他可以用于数据永久存储,而且简单实用,所以大家都比较喜欢这用方式。
1.获取NSUserDefault的单例 :通过standardUserDefaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
2.存储方式:
NSUserDefaults 单例已key-value 的形式存储一系列的设置,key是名称,value是相应的数据。存数据(objectForKey:),取数据(setObject:forKey:)
存储的数据类型包括:NSData,NSString,NSNumber,NSDate, NSArray,NSDictionary。假如你要存储图片的话,就不能直接存储了,需要先将图片归档为NSData类型。
3.存取不同类型的数据:
*******存:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@”jack“ forKey:@"firstName"];
[defaults setInteger:10 forKey:@"Age"];
UIImage *image =[UIImage imageNamed:@"somename"];
NSData *imageData = UIImageJPEGRepresentation(image, 100);//把image归档为NSData
[defaults setObject:imageData forKey:@"image"];
[defaults synchronize];
其中,方法synchronize是为了强制存储,其实并非是必须得,因为这个方法会在系统中默认调用,但是你确认要马上就储存,这是可以的
*********读
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *firstName = [defaults objectForKey:@"firstName"]
NSInteger age = [defaults integerForKey:@"Age"];
NSData *imageData = [defaults dataForKey:@"image"];
UIImage *image = [UIImage imageWithData:imageData];
注意:对相同的Key赋值约等于一次覆盖,要保证每一个Key的唯一性
其他几个存取不同类型数据的方法:
- setBool:forKey:
- setFloat:forKey:
- setInteger:forKey:
- setDouble:forKey:
- setURL:forKey:
我在项目中的简单应用:
在appdelegate中通过
- (void)registerDefaults:方法来初始化,
以上是关于ios数据永久存储之----NSUserDefaults的主要内容,如果未能解决你的问题,请参考以下文章
如何仅使用 iOS 5+ 和 Cordova 3.5 在本地永久存储数据文件?