【Objective-C】OC中对象归档(序列化)的基本概念和用法

概念:归档是把对象写入文件保存在硬盘中,当再次重新打开程序时,可以还原这些对象。

网站设计制作过程拒绝使用模板建站;使用PHP+MYSQL原生开发可交付网站源代码;符合网站优化排名的后台管理系统;网站制作、网站设计收费合理;免费进行网站备案等企业网站建设一条龙服务.我们是一家持续稳定运营了10多年的成都创新互联网站建设公司。

数据持久化的方法:

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,constchar* 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);}return0;}

【Objective-C】OC中对象归档(序列化)的基本概念和用法

自定义内容归档:

       归档:1:使用NSData实例作为归档的存储数据

               2:添加归档的内容(设置key与value) 

               3:完成归档,把归档的数据存入到硬盘中

       还原数据:

               1:从硬盘中读取文件,生成NSData实例

               2:根据Data实例进行创建和初始化还原归档文件实例

               3:还原文件,根据key去访问相应的value值


实例:使用自定义数据类型进行归档并且还原数据,看下实现代码:

      

#import <Foundation/Foundation.h>int main(int argc,constchar* 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);}return0;}

   【Objective-C】OC中对象归档(序列化)的基本概念和用法

当前文章:【Objective-C】OC中对象归档(序列化)的基本概念和用法
分享链接:https://www.cdcxhl.com/article32/jhcjsc.html

成都网站建设公司_创新互联,为您提供全网营销推广关键词优化网站建设小程序开发网页设计公司搜索引擎优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设