数据处理(一)
来源:互联网 发布:丧尸围城2优化补丁 编辑:程序博客网 时间:2024/06/05 14:13
在实际项目开发中,归档解档以及writetofile用的相对较少,但也必须了解一下。
归档解档
一、归档解档的理解如下:
/** * 可以存储自定义模型对象 * 1.归档相对于polist存储而言,它可以直接存储自定义模型对象,而polist文件需要将模型转化为字典才可以存储自定义对象模型 * 2.归档不能存储大批量数据(想比较Sqlite而言),存储数据到文件是将所有的数据一次性存储到文件中,从文件中读取数据也是一次性读取所有的数据 * 弊端:增删改查的性能低 */
二、对象的.h文件遵守NSCoding协议,在.m文件中实现相应的两个方法,本文以Student作为例子。
#import <objc/runtime.h>@implementation Student//利用runtime机制进行归档反归档/** * 当一个对象要归档的时候就会调用这个方法接档 * 当前那些属性需要解档 */-(id)initWithCoder:(NSCoder *)aDecoder{//解档 if (self = [super init]) { unsigned int outCount; Ivar * ivars = class_copyIvarList([self class], &outCount); for (int i = 0; i < outCount; i ++) { Ivar ivar = ivars[i]; NSString * key = [NSString stringWithUTF8String:ivar_getName(ivar)]; [self setValue:[aDecoder decodeObjectForKey:key] forKey:key]; } } return self;}/** * 当一个对象要归档的时候就会调用这个方法归档 * 当前那些属性需要归档 */-(void)encodeWithCoder:(NSCoder *)aCoder{//归档 unsigned int outCount; Ivar * ivars = class_copyIvarList([self class], &outCount); for (int i = 0; i < outCount; i ++) { Ivar ivar = ivars[i]; NSString * key = [NSString stringWithUTF8String:ivar_getName(ivar)]; [aCoder encodeObject:[self valueForKey:key] forKey:key]; }}
+ (void)datastorage_archiver{ NSMutableArray * array = [NSMutableArray array]; NSArray * sexArray = [NSArray arrayWithObjects:@"男",@"女", nil]; NSArray * hobbyArray = [NSArray arrayWithObjects:@"篮球",@"足球",@"乒乓球",@"橄榄球",@"棒球",@"羽毛球", nil]; for (int i = 0; i < 100; i ++) { Student * student = [[Student alloc] init]; if (i == 50) { student.age = 100; student.name = @"fuzongjian"; student.hobby= @"健身"; student.sex = @"男"; }else{ student.age = arc4random() % 20; student.name = [NSString stringWithFormat:@"我是%d号",i]; student.sex = [sexArray objectAtIndex:arc4random() % 2]; student.hobby = [hobbyArray objectAtIndex:arc4random() % 6]; } [array addObject:student]; } [NSKeyedArchiver archiveRootObject:array toFile:@"/Users/chenshuao/Desktop/student.txt"];}
四、解档
+ (void)datastorage_unarchiver{ NSArray * array = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/chenshuao/Desktop/student.txt"]; for (int i = 0 ; i < array.count; i ++ ) { Student * student = array[i]; NSLog(@"%@ %d",student.hobby,i); }}
WriteToFile
一、WriteToFile理解如下:
/** * 只能存储OC常用数据类型,NSString、NSDictionary、NSArray、NSData、NSNumber、NSDate、Boolean * polist 只能识别字典和数组 */
二、存储
+ (void)writetofile_test{ NSArray * array = [NSArray arrayWithObjects:@"fu",@"zong",@"jian", nil]; [array writeToFile:@"Users/chenshuao/Desktop/write.polist" atomically:YES];}
三、读取
+ (void)readfromfile_test{ NSArray * array =[NSArray arrayWithContentsOfFile:@"Users/chenshuao/Desktop/write.polist"]; NSLog(@"%@",[array firstObject]);}
一般来说,以什么形式(比如数组)存储,读取就以什么形式(比如数组)接收。
0 0
- 数据处理(一)
- 激光数据处理(一)
- 数据处理阶段(一)
- pandas数据处理(一)
- 数据处理笔记(一)
- 数据处理工具用户手册(一)
- tensorflow 图像数据处理(一)
- 海量数据处理专题(一、二、三)
- 大数据处理之hadoop(一)
- 登陆界面的数据处理(一)
- 开源大数据处理引擎汇总(一)
- Storm实时大数据处理(一)
- 开源大数据处理引擎汇总(一)kosmosfs
- 海量数据处理(一)哈希分治
- python 数据处理学习一(pandas)
- GPS数据处理---< 一 >---数据格式
- 海量数据处理(一)
- 海量数据处理一
- LeetCode 304. Range Sum Query 2D - Immutable(矩阵求和)
- 10007---全文检索引擎Solr系列——整合MySQL、MongoDB
- 练习合成
- google地图 MapFragment
- 有return的情况下try catch finally的执行顺序
- 数据处理(一)
- LeetCode 111. Minimum Depth of Binary Tree
- 菲波拉契数列
- provider:SQL Network Interfaces,error:26 - 定位指定的服务器/实例时出错--错误原因及解决办法
- ArcGIS Javascript学习笔记(二)创建地图应用程序
- Android Intent 传递二进制数值的两种方法
- 观察者设计模式
- Maven的是使用《三》之nexus私服的搭建
- 算法动态规划之最长公共子序列