归档自定义对象用到的编码解码
来源:互联网 发布:麦迪在cba的数据 编辑:程序博客网 时间:2024/05/21 00:49
上文归档中没有提到的对自定义的对象归档,当我们对自定义的对象进行归档时会报错,因为程序对自定义的对象归档不知道该怎么编码解码,所以我们可以通过实现NSCoding协议的相关方法来告诉程序如何编码解码我们自定义类的对象,
代码:
自定义类遵守NSCoding协议,并且实现一下两个方法
#pragma mark---NSCoding
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.nameforKey:@"PersonName"];
// [aCoder encodeObject:self.age forKey:@"personAge"];
[aCoder encodeInt:self.ageforKey:@"personAge"];
}
- (nullableinstancetype)initWithCoder:(NSCoder *)aDecoder{
self.name = [aDecoderdecodeObjectForKey:@"PersonName"];
self.age = [aDecoderdecodeIntForKey:@"personAge"];
returnself;
}
这样我们就可以对自定义类的对象进行归档操作了,person *per = [[personalloc]init];
per.name =@"zhangsan";
per.age =12;
person *new = [percopy];
new.name =@"lisi";
new.age =13;
NSMutableArray *arry1 = [NSMutableArrayarrayWithObjects:per,new,nil];
NSString *filePath =@"";
NSString *arrPath = [filePathstringByAppendingPathComponent:@"arr.archiver"];
//归档
[NSKeyedArchiverarchiveRootObject:arry1toFile:arrPath];
//反归档
NSArray *arrUnarch = [NSKeyedUnarchiverunarchiveObjectWithFile:arrPath];
for (person *pin arrUnarch) {
NSLog(@"%@",p.name);
}
方法+1
NSMutableData *archiverData =[NSMutableDatadata];
NSKeyedArchiver *archiver = [[NSKeyedArchiveralloc] initForWritingWithMutableData:archiverData];
[archiver encodeObject:arry1forKey:@"array1"];
[archiver encodeObject:perforKey:@"person"];
[archiver finishEncoding];
[archiverData writeToFile:arrPathatomically:YES];
NSMutableData *UnarchiverData = [NSMutableDatadataWithContentsOfFile:arrPath];
NSKeyedUnarchiver *Unarchiver = [[NSKeyedUnarchiveralloc] initForReadingWithData:UnarchiverData];
NSArray *arr3 = [UnarchiverdecodeObjectForKey:@"array1"];
person *per3 = [UnarchiverdecodeObjectForKey:@"person"];
- 归档自定义对象用到的编码解码
- 数据的编码与解码(归档与反归档)
- Object-C中自定义对象的归档
- objective-C 自定义对象归档的实现
- 自定义Base64编码和解码的实现
- 归档自定义对象
- 自定义对象归档、解档
- 归档解档(编码解码)
- 归档,反归档,编码者,解码者(重要)
- Objective-C 对象进阶:自定义对象的归档
- iOS 系统对象和自定义对象的归档Archiver
- iOS 数据的本地存储-自定义对象的归档
- 自定义对象归档(解档)
- 【OC学习-28】自定义对象的归档和解归档:例子说明以及简单总结
- IOS文件操作和自定义对象的归档(序列化)、反归档(反序列化)
- NSCoder对象编码和解码
- NSCoder对象编码和解码
- php编码解码json对象
- Java读取Excel文件内容
- DT 时代,云上运维的变与不变
- STM32中printf重定向到串口
- spring+mybatis多数据源(数据库主从)实例
- 字符串的几种用法:
- 归档自定义对象用到的编码解码
- JDBC学习笔记 -- day01 入门程序
- 在移动的div中显示年月日时分秒星期,并计算当前页面活动时间
- Android文件存储小结
- WKWebView使用
- intellij idea 的 project 和 module 到底是啥关系
- redis主从复制
- 使用win32imageinstall安装ubuntu
- css圆圈旋转特效