NSUserDefaults:用来保存应用程序设置和属性、用户保存的数据。用户再次打开程序或开机后这些数据仍然存在。NSUserDefaults可以存储的数据类型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary。如果要存储其他类型,则需要转换为前面的类型,才能用NSUserDefaults存储。
保存数据:
- -(void)saveSetting {
- NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
- //save string
- NSString* saveString = @"simon";
- [defaults setObject:saveString forKey:@"name"];
- //save integer
- NSInteger saveInt = 100;
- [defaults setInteger: saveInt forKey:@"count"];
- //save bool
- BOOL saveBool = YES;
- [defaults setBool: saveBool forKey:@"flag"];
- //save image
- UIImage *image=[[UIImage alloc]initWithContentsOfFile:@"photo.jpg"];
- NSData *imageData = UIImageJPEGRepresentation(image, 100);//UIImage对象转换成NSData
- [defaults setObject:imageData forKey:@"image"];
- //用synchronize方法把数据持久化到standardUserDefaults数据库
- [defaults synchronize];
- }
然后便可以在程序的任何地方读取这些数据了。 要注意的是NSUserDefault存储的都是不可变(immutable)的数据,就算是将NSMutableArray存到NSUserDefault,读取出来之后还是会变成NSArray类型的。
- -(void)getSetting {
- NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
- //根据键值取出name
- NSString *name = [defaults objectForKey:@"name"];
- NSInteger count = [defaults objectForKey:@"count"];
- BOOL bflag = [defaults objectForKey:@"flag"];
- NSData *imageData = [defaults dataForKey:@"image"];
- UIImage *Image = [UIImage imageWithData:imageData];//NSData转换为UIImage
- }