博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
objective C中数据持久化方式1--对象归档
阅读量:7088 次
发布时间:2019-06-28

本文共 2044 字,大约阅读时间需要 6 分钟。

第一、数据持久化的方式:

NSKeyedArchiver--对象归档

属性列表化(NSArray、NSDictionary、NSUserDefault)

SQlite数据库、CoreData数据库

其中第一、二种方式针对数据量小的数据,第三种方式针对大数据,归档的文件是加密的,属性列表明文的。

归档的形式;

对foundation库中对象进行归档

自定义对象的归档(需要实现归档协议:NSCoding)

第二 最简单归档和解归档的实现代码:

 

@autoreleasepool {        NSString *homeDictory=NSHomeDirectory();        NSArray *array=[NSArray arrayWithObjects:@"one",@"two",@"three",nil];        NSString *homePath=[homeDictory stringByAppendingPathComponent:@"Desktop/test.archive"];        if(![NSKeyedArchiver archiveRootObject:array toFile:homePath])        {            NSLog(@"归档失败");        }else        {            NSArray *data=[NSKeyedUnarchiver unarchiveObjectWithFile:homePath];            NSLog(@"%@",data);                }                NSLog(@"Hello, World!");            }

第四、复杂的内容归档

 

使用NSData实例作为归档的存储数据,添加归档的内容(设置key和value),完成归档,将归档内容存入磁盘

解归档步骤:从磁盘读取文件,生成NSData实例,根据data实例创建或初始化归档实例,解归档,根据key访问value的值

 

NSString *homeDictory=NSHomeDirectory();        NSString *homePath=[homeDictory stringByAppendingPathComponent:@"Desktop/usertest.archive"];                NSMutableData *data=[NSMutableData data];        NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc] initForWritingWithMutableData:data];                NSArray *nameArray=[NSArray arrayWithObjects:@"andy",@"yang", nil];        [archiver encodeInt:100 forKey:@"age"];        [archiver encodeObject:nameArray forKey:@"names"];        [archiver finishEncoding];        [archiver release];                if ([data writeToFile:homePath atomically:YES])        {            NSData *data2=[NSData dataWithContentsOfFile:homePath];            NSKeyedUnarchiver *unarchiver=[[NSKeyedUnarchiver alloc] initForReadingWithData:data2];            int age=[unarchiver decodeIntForKey:@"age"];            NSArray *array2=[unarchiver decodeObjectForKey:@"names"];            NSLog(@"%d",age);            NSLog(@"%@",array2);            [unarchiver release];        } else        {                        NSLog(@"write to file wrong");        }                        NSLog(@"Hello, World!");            }

 

 

转载地址:http://nagml.baihongyu.com/

你可能感兴趣的文章
使用k-近邻算法改进约会网站的配对效果
查看>>
正则大全(转)
查看>>
易维清使用技巧:权限精确控制到字段
查看>>
UVa(12821),MCMF
查看>>
Count of Smaller Number After Itself
查看>>
备忘录模式 Memento 快照模式 标记Token模式 行为型 设计模式(二十二)
查看>>
cacti系列(三)之cacti添加对mysql服务器主从的监控
查看>>
shell编程系列10--文本处理三剑客之sed利用sed查询特定内容
查看>>
【项目管理】项目管理发展的新阶段——PRINCE2项目管理方法
查看>>
C++模式学习------代理模式
查看>>
UVA11945 Financial Management
查看>>
ACM算法分类
查看>>
c中static作用
查看>>
Gulp-livereload:实时刷新编码
查看>>
三天打鱼两天晒网(15)
查看>>
Aix 文件名补齐及aix6.1 bash安装
查看>>
jdbc连接数据库
查看>>
excel控制
查看>>
轻松搞懂javascript event对象的clientX,offsetX,screenX,pageX区别
查看>>
Unicide编码
查看>>