自定义类归档
来源:互联网 发布:i3 2100安装Mac OS 编辑:程序博客网 时间:2024/06/05 15:45
自定义类如果需要归档的话,需要遵守NSCoding协议,并实现两个方法:
- (void)encodeWithCoder:(NSCoder *)aCoder;- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder;
下面以自定义 Person 类为例:
//.h文件#import <Foundation/Foundation.h>@interface Person : NSObject <NSCoding>@property (nonatomic, copy) NSString *name;@property (nonatomic, assign) NSUInteger age;@end//.m文件#import "Person.h"@implementation Person/** 数据归档调用 (1)那些属性需要归档 (2)这些属性如何归档 */- (void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:self.name forKey:@"name"]; [aCoder encodeInteger:self.age forKey:@"age"];}/** 数据解档调用 (1)那些属性需要解档 (2)如何解档 */- (instancetype)initWithCoder:(NSCoder *)aDecoder{ //当父类中又 NSCoding 协议的时候,用[super initWithCoder:aDecoder]; self = [super init]; if (self) { _name = [aDecoder decodeObjectForKey:@"name"]; _age = [aDecoder decodeIntegerForKey:@"age"]; } return self;}//类似于java的toString方法- (NSString *)description{ return [NSString stringWithFormat:@"name: %@, age: %zd", self.name, self.age];}@end
主文件main.m
//初始化自定义类 Person *person = [[Person alloc] init]; person.name = @"张三"; person.age = 20; //获取存储路径 NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; NSString *filePath = [cachesPath stringByAppendingPathComponent:@"person.data"]; //数据归档 [NSKeyedArchiver archiveRootObject:person toFile:filePath]; //数据解档 Person *p = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath]; NSLog(@"%@",p);
最终的结果为:
test[8814:79293] name: 张三, age: 20
0 0
- 自定义类归档
- iOS自定义类 - NSKeyedArchiver归档自定义类
- 归档/解归档已经实现NSCoding协议以使自定义类具有归档功能
- iOS 归档 和 自定义归档
- 归档自定义对象
- OC之自定义归档
- 自定义对象归档、解档
- iOS 文档归档(2)自定义归档
- 自定义类型归档与反归档
- 如何对自定义类进行归档,写入plist文件
- ios自定义归档解档
- 自定义对象归档(解档)
- 自定义对象的归档 //类只有实现 NSCoding 协议才具备归档功能 归档最好定义成宏,笔误好发现.
- IOS开发——自定义类归档(继承于自定义类)
- 只需一步即可自定义的类具有归档解档功能
- Object-C中自定义对象的归档
- iOS开发之自定义对象归档
- objective-C 自定义对象归档的实现
- PHP中单引号和双引号的区别
- C++(一)
- muduo:线程池
- 非静态类中为什不能定义静态方法
- (OK)(www.nrl.navy.mil) OSPF MANET Designated Routers (OSPF-MDR) Implementation
- 自定义类归档
- Python3标准库简介
- 【BZOJ 3157】【BZOJ 3516】国王奇遇记
- mysql查找配置文件的顺序
- python 之切片的另一个使用方式
- iOS学习- 23 Core Data by Tutorials - CH03
- Java调用动态链接库-扩展
- numpy函数:shape用法
- 格式化TextView 的文本