您的位置:首页 > 其它

NSUserDefault

2016-04-17 13:28 211 查看
```
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

/*
NSUserdefault类提供了一个默认的系统编程接口,用于存储简单的数据,以便下次启动的时候能够恢复上次的设置而且可以在程序的任何地方读取数据;
具有缓存机制
不必每次读取的时候都打开应用程序的默认设置数据库

不支持直接存储对象
可以保存简单的数据
每一个数据的保存都对应着一对value/key
如果对相同的key进行了操作相当于是进行了一次覆盖
存储的对象都必须是不可变的
如果需要对可变的进行操作需要先获取不可变的在给可变的赋值
如果使用了可变的对象元素会导致crash和bug

当需要对自定义类型的对象数据进行操作
需要将对象变成NSData然后进行本地存储的操作
取值同理

如果需要修改数据可以通过key的唯一性进行覆盖操作

*/
#warning 注意保持key的唯一性

//存储一个NSString对象
NSString *str = @"qxw";
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
[user setObject:str forKey:@"userStr"];
//取值
NSString *userStr = [user objectForKey:@"userStr"];
NSLog(@"%@",userStr);

//存储不可变的数据
NSArray *array = [NSArray arrayWithObject:userStr];
[user setObject:array forKey:@"记住一定是不可变的"];
NSMutableArray *dataArray = [NSMutableArray array];
dataArray = [NSMutableArray arrayWithArray:[user objectForKey:@"记住一定是不可变的"]];
NSLog(@"%ld",dataArray.count);

//存储自定义的对象
Student *stu = [[Student alloc] init];
stu.name = @"qxw";
stu.sex = @"男";
stu.number = @"123456";
//将对象转化为nsdata对象
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:stu];
[user setObject:data forKey:@"oneStu"];

//取出数据
NSData *datas = [user objectForKey:@"oneStu"];
Student *stu1  = [NSKeyedUnarchiver unarchiveObjectWithData:datas];
NSLog(@"%@",stu1.name);

}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

//自定义的对象
.H文件
#import <Foundation/Foundation.h>

@interface Student : NSObject<NSCoding>
@property (nonatomic, strong)NSString * name;
@property (nonatomic, strong)NSString * phone;
@property (nonatomic, strong)NSString * sex;

@end

//.M文件
#import <Foundation/Foundation.h>

@interface Student : NSObject<NSCoding>
@property (nonatomic, strong)NSString * name;
@property (nonatomic, strong)NSString * phone;
@property (nonatomic, strong)NSString * sex;

@end

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: