NSUserDefault

NSUserDefault存储机制
```
#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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值