iOS本地的缓存的方式

一、    NSKeyedArchiver(归档)采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法。

  

// -------------遵循协议后必须实现的两个方法--------------
//1,编码。编码的是属性(对应于归档的时候)(序列化)
-(void)encodeWithCoder:(NSCoder *)aCoder
{
    //需要对每一个属性就行编码
    [aCoder encodeObject:self.name forKey:@"name"];//1,随便起名,但是必须跟下面的对应
    [aCoder encodeObject:self.sex forKey:@"sex1"];
    
}
//2,解码。(对应的是反归档的时候)(反序列化)
-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super init];
    if (self) {
        //将编码好的数据,反编码回到本身的属性上
        self.name = [aDecoder decodeObjectForKey:@"name"];
        self.sex = [aDecoder decodeObjectForKey:@"sex1"];//2,必须跟上面的对应一样
    }
    return self;
}

     //-------归档步骤
    //1,有一个遵守了NSCoding协议的复杂对象
    //2,初始化对象
    //3,创建一个NSMutableData
    //4,使用NSMutableData初始化归档工具NSKeyedArchiver
    //5,通过工具NSKeyedArchiver将复杂对象编码到NSMutableData里面
    //6,结束编码
    //7,将NSMutableData写入本地
    
    //-------反归档步骤
    //1,通过路径拿到NSData数据(里面存放的是Person复杂对象跟key值)
    //2,通过NSData初始化一个反归档工具NSKeyedUnarchiver
    //3,通过key值拿到编码的对象,把编码好的数据反编码到本身的属性上
    //4,通过初始化一个Person类,通过key值接收解档后的数据
    //5,结束反归档




二、    NSUserDefaults:用来保存应用程序设置和属性、用户保存的数据。用户再次打开程序或开机后这些数据仍然存在。NSUserDefaults可以存储的简单数据类型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary。(版本号,是否首次登陆,存储的是登陆之后的用户名和用户信息)


    //存值
    NSUserDefaults *user1 = [NSUserDefaults standardUserDefaults];
    [user1 setObject:@"名字" forKey:@"name"];

   

    //取值

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
    NSLog(@"%@",[user objectForKey:@"name"]);

三、    Write写入方式:永久保存在磁盘中。(直接写入本地,遵守了NSCoding协议Foundation框架下的简单对象:NSString、NSArray、NSDictionary、NSData二进制对象)

         1,二进制对象可能存储的是图像、字符串等等

         2,创建写入的地址,后面拼接文件名,如果没有的话,会自动创建,如果有,直接写入,文件的格式没什么用


        注意:
        1,直接写入本地的时候,第一次写入之后,如果再次对同一个文件进行写入操作,会覆盖前面的数据

        2, 一次只能写入一条数据(这是当一次需要写入大量数据时用数组写入的原因)

        3,如果不想覆盖,就先读出来,然后一起再写进去

        4,所有能够直接写入本地的,一定要遵守NSCoding协议

        iOS 只有 NSString、NSArray、NSDictionary、NSData(以及它们对应的可变量)可以直接在沙盒写入,其他的一概不能直接写入----而且数组或者字典等这些容器里面存储的数据必须是上述数据-------



四、    SQLite(FMDB、CoreData)
NSCoding + NSKeyedArchiver实现复杂对象的存储。
 
常见的数据库:1,SQL  2,My SQL  3,Oracle
数据库:1,以一定方式存储在一起
               2,能为多个用户共享
               3,具有尽可能小得冗余度
               4,与程序彼此独立的数据集合
一,库 
二,表:主键,普通键,外键(其他表的主键)
三,字段

SQL命令:1,数据插入命令(Insert)
                  2,数据更新命令(Update)
                  3,数据删除命令(Delete)
                  4,数据检索命令(Select)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值