数据处理赏罚(一)
发布时间:2021-05-28 16:04:03 所属栏目:大数据 来源:网络整理
导读:在现实项目开拓中,归档解档以及writetofile用的相对较少,但也必需相识一下。 归档解档 一、归档解档的领略如下: /** * 可以存储自界说模子工具 * 1.归档相对付polist存储而言,它可以直接存储自界说模子工具,而polist文件必要将模子转化为字典才可以存储
在现实项目开拓中,归档解档以及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]); } 一样平常来说,以什么情势(好比数组)存储,读取就以什么情势(好比数组)吸取。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |