iOS NSKeyedArchiver和NSKeyedUnarchiver
2021/5/18 18:55:36
本文主要是介绍iOS NSKeyedArchiver和NSKeyedUnarchiver,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
NSKeyedArchiver
和NSKeyedUnarchiver
两个类把对象序列化和反序列化。
所有的序列化对象必须继承NSSecureCoding
,例如NSString
、NSArray
等
-(void) stringArchiver { NSData* data = [NSKeyedArchiver archivedDataWithRootObject:@"Hello World" requiringSecureCoding:YES error:nil]; [data writeToFile:self.dataPath options:0 error:nil]; } -(void) stringUnarchiver { NSData* data = [NSData dataWithContentsOfFile:self.dataPath options:0 error:nil]; NSString* str = [NSKeyedUnarchiver unarchivedObjectOfClass:[NSString class] fromData:data error:nil]; NSLog(@"%@", str); }
自定义序列化对象Person
同样需要继承NSSecureCoding
,并实现initWithCoder:
、encodeWithCoder:
和supportsSecureCoding
方法
// Person.h @interface Person : NSObject<NSSecureCoding> @property (nonatomic, copy) NSString* name; @property (nonatomic, assign) NSInteger age; @end // Person.m @implementation Person - (instancetype)initWithCoder:(NSCoder *)aDecoder { self = [super init]; if (self) { self.name = [aDecoder decodeObjectForKey:@"name"]; self.age = [aDecoder decodeIntegerForKey:@"age"]; } return self; } - (void)encodeWithCoder:(NSCoder *)aEncoder { [aEncoder encodeObject:self.name forKey:@"name"]; [aEncoder encodeInteger:self.age forKey:@"age"]; } + (BOOL)supportsSecureCoding { return YES; } - (NSString *)description { return [NSString stringWithFormat:@"%@ - %ld", self.name, self.age]; } @end -(void) objectArchiver { Person* person = [[Person alloc] init]; person.name = @"Jack"; person.age = 18; NSData* data = [NSKeyedArchiver archivedDataWithRootObject:person requiringSecureCoding:YES error:nil]; [data writeToFile:self.dataPath options:0 error:nil]; } -(void) objectUnarchiver { NSData* data = [NSData dataWithContentsOfFile:self.dataPath options:0 error:nil]; Person* person = [NSKeyedUnarchiver unarchivedObjectOfClass:[Person class] fromData:data error:nil]; NSLog(@"%@", person); }
这篇关于iOS NSKeyedArchiver和NSKeyedUnarchiver的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-06有没有什么开源的py项目可以对图像进行分类-icode9专业技术文章分享
- 2024-07-05feign默认connecttimeout和readtimeout是多少-icode9专业技术文章分享
- 2024-07-05idea控制台,日志太多,导致部分想看得日志被刷走 搜不到-icode9专业技术文章分享
- 2024-07-05The server selected protocol version Tls10 is not accepted by client preferences [TLs12]-icode9专业技术文章分享
- 2024-07-05怎么清理项目缓存-icode9专业技术文章分享
- 2024-07-04安装 Eyoucms详细图文教程-icode9专业技术文章分享
- 2024-07-04ueditor 复制文章时,图片的链接是一个下载图片地址,该如何处理?-icode9专业技术文章分享
- 2024-07-04怎样判断host有没有对wordpress有缓存呢-icode9专业技术文章分享
- 2024-07-04具有编译功能的系统make后,无法ssh连接-icode9专业技术文章分享
- 2024-07-04make后如何升级ssh-icode9专业技术文章分享