首页 > 代码库 > ios数据永久存储之----NSUserDefaults

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 = http://www.mamicode.com/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 = http://www.mamicode.com/[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