美文网首页
iOS文件归档NSKeyedArchiver的使用

iOS文件归档NSKeyedArchiver的使用

作者: koreadragon | 来源:发表于2018-01-18 11:38 被阅读78次

NSKeyedArchiver可以归档系统对象,也可以归档自定义对象,不过自定义对象要实现NSCoding协议:

-(void)encodeWithCoder:(NSCoder *)aCoder 进行编码

-(id)initWithCoder:(NSCoder *)aDecoder解码返回一个对象

比如我们定义一个Person类

----------------Person.h
@interface Person :NSObject<NSCoding>

@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *gender;
@property(nonatomic,copy)NSString *hobby;

@end

----------------Person.m
@implementation Person


- (void)encodeWithCoder:(nonnull NSCoder *)aCoder {
    NSLog(@"decode...");
    [aCoder encodeObject:_name forKey:@"_name"];
    [aCoder encodeObject:_gender forKey:@"_gender"];
    [aCoder encodeObject:_hobby forKey:@"_hobby"];
}

- (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder {
    NSLog(@"encode...");
    if (self = [super init]) {
        self.name = [aDecoder decodeObjectForKey:@"_name"];
        self.gender = [aDecoder decodeObjectForKey:@"_gender"];
        self.hobby = [aDecoder decodeObjectForKey:@"_hobby"];
    }
    return self;
}
-(NSString *)description{
    return [NSString stringWithFormat:@"name=%@,gender=%@,hobby=%@",_name,_gender,_hobby];
}

开始储存:

    Person *p = [[Person alloc] init];
    p.name = @"koreadragon";
    p.gender = @"male";
    p.hobby = @"fishing";
    NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
    path = [NSString stringWithFormat:@"%@/korea.info",NSTemporaryDirectory()];
    BOOL archResult = [NSKeyedArchiver archiveRootObject:p toFile:path];
    NSLog(@"%@",archResult ? @"储存成功":@"储存失败");

解析:

Person *p = [NSKeyedUnarchiver unarchiveObjectWithFile:self.filePath];
    NSLog(@"解档出的文件:%@",p);

相关文章

  • 2021-08-20

    iOS swift NSKeyedArchiver 使用 iOS 中swift的归档与解挡 归档: 将对象按照一定...

  • iOS数据持久化方式

    iOS数据持久化方式 文件 归档(NSKeyedArchiver) 属性列表(NSUserDefaults) 数据...

  • iOS文件归档NSKeyedArchiver的使用

    NSKeyedArchiver可以归档系统对象,也可以归档自定义对象,不过自定义对象要实现NSCoding协议: ...

  • iOS NSData归档

    *上一章iOS NSKeyedArchiver数据归档写到使用archiveRootObject:toFile:方...

  • 对象归档

    8.8.1 使用NSKeyedArchiver归档 与NSKeyedArchiver配套使用的还有一个NSKeye...

  • iOS NSKeyedArchiver数据归档

    iOS中利用NSKeyedArchiver和NSKeyedUnarchiver进行数据的归档和解档操作。 归档 所...

  • iOS-归档

    归档:数据从内存存储到闪存上 NSKeyedArchiver、NSKeyedUnarchiver归档后的文件是加密...

  • iOS 归档NSKeyedArchiver

    一、归档NSKeyedArchiver和解归档NSKeyedUnarchiver 1.首先确定存储路径。 NSHo...

  • ios 数据持久化

    文件 归档(NSKeyedArchiver) 属性列表(NSUserDefaults) 数据库(SQLite、Co...

  • iOS 中数据持久化的几种方式

    文件 归档(NSKeyedArchiver) 属性列表(NSUserDefaults) 数据库(SQLite、Co...

网友评论

      本文标题:iOS文件归档NSKeyedArchiver的使用

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