概念:归档是把对象写入文件保存在硬盘中,当再次重新打开程序时,可以还原这些对象。
创新互联专注于海丰企业网站建设,响应式网站开发,商城网站开发。海丰网站建设公司,为海丰等地区提供建站服务。全流程按需求定制设计,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务数据持久化的方法:
1:NSKeyedArchiver-对象归档
2:NSUserDefaults
3:属性列表化(NSArray,NSDictonary保存文件)
4:SQlite数据库,CoreData数据库
归档的形式
1:对Foundation库中对象进行归档
2:自定义对象进行规定(需要实现归档协议,NSCoding)
3:归档后的文件是加密的,属性列表是明文的
实例
(一):使用数组为例,实现数组的归档和还原
主要用到一下两个类:(NSKeyedArchiver与NSKeyedUnarchiver)的方法
(1):+ (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path; //进行把对象归档到文件当中去
(2):+ (id)unarchiveObjectWithFile:(NSString *)path; //根据文件的路径进行还原内容
看下面代码:
#import <Foundation/Foundation.h>
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSArray *array=@[@"abc",@"123",@5678]; NSString *homePath=NSHomeDirectory(); NSString *srcPath=[homePath stringByAppendingPathComponent:@"/Desktop/array.archiver"]; BOOL success=[NSKeyedArchiver archiveRootObject:array toFile:srcPath]; if (success) { NSLog(@"归档成功."); } //进行还原 NSArray *resultArray= [NSKeyedUnarchiver unarchiveObjectWithFile:srcPath]; NSLog(@"%@",resultArray); } return 0; }
自定义内容归档:
归档:1:使用NSData实例作为归档的存储数据
2:添加归档的内容(设置key与value)
3:完成归档,把归档的数据存入到硬盘中
还原数据:
1:从硬盘中读取文件,生成NSData实例
2:根据Data实例进行创建和初始化还原归档文件实例
3:还原文件,根据key去访问相应的value值
实例:使用自定义数据类型进行归档并且还原数据,看下实现代码:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //进行自定义对象写入归档 NSString *homePath=NSHomeDirectory(); NSString *srcPath=[homePath stringByAppendingPathComponent:@"/Desktop/custom.archiver"]; NSMutableData *data=[NSMutableData data]; NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc]initForWritingWithMutableData:data]; [archiver encodeInt:100 forKey:@"key1"]; NSArray *arrary=[NSArray arrayWithObjects:@"tom",@"jack", nil]; [archiver encodeObject:arrary forKey:@"key2"]; [archiver finishEncoding]; [archiver release]; BOOL success= [data writeToFile:srcPath atomically:YES]; if(success){ NSLog(@"写入成功..."); } //进行还原数据 NSData *content=[NSData dataWithContentsOfFile:srcPath]; NSKeyedUnarchiver *unarchiver=[[NSKeyedUnarchiver alloc ]initForReadingWithData:content]; NSUInteger result1= [unarchiver decodeIntForKey:@"key1"]; NSArray *result2=[unarchiver decodeObjectForKey:@"key2"]; NSLog(@"还原的数据为:"); NSLog(@"key1= %ld ",result1); NSLog(@"key2= %@",result2); } return 0; }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
标题名称:【Objective-C】OC中对象归档(序列化)的基本概念和用法-创新互联
文章网址:https://www.cdcxhl.com/article10/jspdo.html
成都网站建设公司_创新互联,为您提供App设计、定制开发、企业建站、建站公司、ChatGPT、网站营销
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联