OC归档

作者: wlwl123 | 来源:发表于2016-10-26 20:21 被阅读0次

archive:归档
主要是把对象 存 磁盘
对象包括 系统对象 如 NSString NSArray NSDictionary
特殊之处: 可以存储 自定类型的对象

  1. NSString 类型
NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject.
NSLog(@"%@", docPath);
NSString *strPath = [docPath stringByAppendingPathComponent:@"str"];
//归档
[NSKeyedArchiver archiveRootObject:@"你好" toFile:strPath];
//解档
NSString *str = [NSKeyedUnarchiver unarchiveObjectWithFile:strPath];
NSLog(@"%@", str);```

2. 字典类型
//1. 拼接路径 ~/Documents/dic
NSString *dicPath = [docPath stringByAppendingPathComponent:@"dic"];
//2. 归档一个字典类型 到路径下
//@{@"name":@"cheng", @"age":@18, @"skill":@"smile"}
[NSKeyedArchiver archiveRootObject:@{@"name":@"cheng", @"age":@18, @"skill":@"smile"} toFile:dicPath];
//3. 解档 并 打印
NSDictionary *dic = [NSKeyedUnarchiver unarchiveObjectWithFile:dicPath];
NSLog(@"%@", dic);```
  1. 自定义类型的 如对象
Student *stu = [Student new];
    stu.name = @"Master.Cheng";
    stu.sex = @"women";
    stu.age = 22;
    stu.marry = NO;
    stu.school = @"山东蓝翔职业挖掘机技术学院";
    stu.className = @"挖掘机2班";
    stu.favor = @"虚空遁地兽";
    stu.skill = @"打野";
    stu.score = @"良+";
    NSString *stuPath = [docPath stringByAppendingPathComponent:@"stu"];
    [NSKeyedArchiver archiveRootObject:stu toFile:stuPath];
    Student *aaa = [NSKeyedUnarchiver unarchiveObjectWithFile:stuPath];
    NSLog(@"%@", aaa);

自定义类型的注意点:
对于自定义类型的归档, 必须实现 NSCoding协议
并实现其中负责归档 和 解档的两个方法

归档方法
 - (void)encodeWithCoder:(NSCoder *)aCoder{
     [aCoder encodeObject:_name forKey:@"name"];
     [aCoder encodeObject:_sex forKey:@"sex"];
     [aCoder encodeInteger:_age forKey:@"age"];
     [aCoder encodeBool:_marry forKey:@"marry"];
     [aCoder encodeObject:_skill forKey:@"skill"];
     [aCoder encodeObject:_school forKey:@"school"];
     [aCoder encodeObject:_score forKey:@"score"];
     [aCoder encodeObject:_className forKey:@"className"];
     [aCoder encodeObject:_favor forKey:@"favor"];
}```
#####解档方法
  • (instancetype)initWithCoder:(NSCoder *)aDecoder{
    if (self = [super init]) {
    self.name = [aDecoder decodeObjectForKey:@"name"];
    self.sex = [aDecoder decodeObjectForKey:@"sex"];
    self.age = [aDecoder decodeIntegerForKey:@"age"];
    self.skill = [aDecoder decodeObjectForKey:@"skill"];
    self.favor = [aDecoder decodeObjectForKey:@"favor"];
    self.className = [aDecoder decodeObjectForKey:@"className"];
    self.school = [aDecoder decodeObjectForKey:@"school"];
    self.score = [aDecoder decodeObjectForKey:@"score"];
    self.marry = [aDecoder decodeBoolForKey:@"marry"];
    }
    return self;
    }```

相关文章

  • OC 归档

    在 Objective-C 语言中,归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象. NS...

  • OC归档

    archive:归档主要是把对象 存 磁盘对象包括 系统对象 如 NSString NSArray NSDicti...

  • OC 数据归档

    数据归档作为一种轻量级的数据存储方式,和属性列表不同之处在于存储的对象广泛,几乎任何类型的对象都能被归档存储且存储...

  • OC中的归档解档

    oc中的归档就是把对象写到文件中. 首先模型必须遵守NSCoding协议,并且实现其中的方法 (归档):- (vo...

  • IOS:OC--归档与反归档

    1.新建类 “Person ”2.Person .h@interface Person : NSObject

  • 归档和解归档

    基本数据持久化:把OC中的基本数据存储到沙盒中。归档:把复杂类型转为data类型的过程。解归档:把data类型转为...

  • Runtime

    1.归档与反归档 如下方法 打印实例变量 2.消息转发 OC的消息发送机制根据方法名来寻找声明完成的实例方法的实现...

  • ios-Runtime(运行时)

    利用runtime来实现归档解档 方法交换 俗称 OC的方法欺骗 KVO的实现原理 用runtime来实现KVO...

  • 聊一聊 Runtime

    Runtime 是一套 C 语言的 API,属于OC 底层的实现。接下来将从消息机制、归档、Hook(下钩子)、动...

  • runtime:一句代码实现对象NSCoding

    参考 OC最实用的runtime总结,面试、工作你看我就足够了! iOS-MJExtension一句话搞定对象归档...

网友评论

    本文标题:OC归档

    本文链接:https://www.haomeiwen.com/subject/jhcjuttx.html