归档反归档

//归档 反归档(麻烦的方法)
    /*
    //归档
    //创建Person实例对象
    Person *person1=[[Person alloc]init];
    [email protected]"bbb";
    [email protected]"39";
    
    Person *person2=[[Person alloc]init];
    [email protected]"aaa";
    [email protected]"18";
    
    
    //归档使用的NSData
    NSMutableData *person1Data=[NSMutableData data];
    
    //创建归档工具
    NSKeyedArchiver *achiver=[[NSKeyedArchiver alloc]initForWritingWithMutableData:person1Data];
    
    //进行归档(需要宏定义)
    [achiver encodeObject:person1 forKey:kPerson1];
    [achiver encodeObject:person2 forKey:kPerson2];
    
    
    //完成转换
    [achiver finishEncoding];
    
    //获取Documents路径
    NSString *documentsPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    //拼接文件路径
    NSString *personPath=[documentsPath stringByAppendingString:@"/刘杰.xxoo"];
    
    //写入
    [person1Data writeToFile:personPath atomically:YES];
    NSLog(@"documents:%@",documentsPath);
    
    
    
    
    
    
    //反归档
    //通过文件路径获取data数据
    NSData *unData=[NSData dataWithContentsOfFile:personPath];
    
    //创建反归档工具
    NSKeyedUnarchiver *unArchiver=[[NSKeyedUnarchiver alloc]initForReadingWithData:unData];
    
    //进行反归档
    Person *p1=[unArchiver decodeObjectForKey:kPerson1];
    Person *p2=[unArchiver decodeObjectForKey:kPerson2];
    
    //结束反归档
    [unArchiver finishDecoding];
    NSLog(@"name:%@",p1.name);
    NSLog(@"age:%@",p1.age);
    NSLog(@"name:%@",p2.name);
    NSLog(@"age:%@",p2.age);
    */

//归档 反归档(简单方法)
    
    //获取Documents路径
    NSString *docPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    
    //拼接文件路径
    NSString *filePath=[docPath stringByAppendingString:@"/personArray.plist"];
    
    /*
     //只能归档一个对象
    Person *pn1=[[Person alloc]init];
    [email protected]"王小二";
    [email protected]"20";
    
    //归档
    [NSKeyedArchiver archiveRootObject:pn1 toFile:filePath];
    
    //反归档
    Person *p1=[NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
    NSLog(@"name:%@",p1.name);
    NSLog(@"age:%@",pn1.age);
    */
    
    
    Person *pn1=[[Person alloc]init];
    [email protected]"Tom";
    [email protected]"12";
    
    Person *pn2=[[Person alloc]init];
    [email protected]"Kim";
    [email protected]"25";
    
    
    NSArray *[email protected][pn1,pn2];//把两个数据放到数组里面

//反归档
    NSArray *a=[NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
    
    NSLog(@"name:%@",[a[0] name ]);
    NSLog(@"age:%@",[a[0] age]);
    
    NSLog(@"name:%@",[a[1] name]);
    NSLog(@"age:%@",[a[1] age]);

时间: 2024-12-28 13:17:57

归档反归档的相关文章

沙盒机制 归档 反归档

//文件路径 //1.Home主目录:里面有Document, library,tem,和一个应用程序 NSLog(@"%@",NSHomeDirectory()); //2.Document路径 NSString *docuPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; NSLog(@"%@",docuPath); //3.Librar

归档反归档 - 本地沙盒存储复杂对象

NSString,NSNumber,NSArray,NSDictionary等简单对象可以方便的存储在本地沙盒文件中,而复杂的对象,诸如属性.方法较多的类对象,就需要使用归档反归档方法(序列化与反序列化),以NSData方式进行存储. 归档反归档,主要的操作顺序是:编码(enCoding) -> 归档(archiver) -> 解码(deCoding) -> 反归档(unarchiver) 1.编码与解码的方法,需要在类的声明文件中接受<NSCoding>协议,在实现文件.m

iOS 字符串的UTF8 编码 以及归档反归档

NSString* str = [@"%E4%B8%AD%E5%9B%BD" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"str=%@", str); NSString *str1 = @"中国"; NSString *str2 = [str1 stringByAddingPercentEscapesUsingEncoding:NSUTF8

Archive(归档/反归档)

1 #import "ViewController.h" 2 #import "Person.h" 3 @interface ViewController () 4 5 @end 6 7 @implementation ViewController 8 9 - (void)viewDidLoad { 10 [super viewDidLoad]; 11 Person *p1 = [Person new]; 12 p1.name = @"Jackie Cha

UI14-沙盒机制,文件的读写,文件管理器的增删移动复制,归档和反归档。

1.复杂对象的归档反归档.person类的使用acoder,进行编码.使用decoder进行根据标记,解码. 2.再使用多个person类中,需要转化工具和解转化工具,achiver,unchiever,记得结束要finish. 3.文件管理器 对文件和文件夹的增删改移动. 4.读取沙盒的文件,和三个主要路径 5.简单类的读取写入,string,数组,和字典.

IOS文件操作和自定义对象的归档(序列化)、反归档(反序列化)

IOS对文件操作包含文件的创建,读写,移动,删除等操作. 1.文件的创建: //设定文本框存储文件的位置 NSString *strFilePath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]; //指定存储文件的文件名 NSString *fileName=[strFilePath stringByAppendingPathComponent:@

归档与反归档

一.归档操作 NSArray *array = @[@"归档",@"反归档",@"开始"]; //1.创建归档对象 NSMutableData *data = [NSMutableData data]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]  initForWritingWithMutableData:data]; //2.归档 [archiver encodeObject:pe

iOS中的 沙盒文件夹 (数据的写入和读取,归档和反归档)

AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { /** 沙盒中文件夹: 1.Documents : 存储长久保存的数据 2.library: Caches:存放的缓存,比如:视频,音频,图片,小说等等 Perferences:存储偏好设置,比如:应用程序是否是第一次启动 保存用户名和密码. 3.t

【iOS开发-存储】使用NSCoding归档和反归档

iOS开发中要想存储对象可以使用NSCoding,要想存储的对象必须实验NSCoding协议 比如我们要存储一个Student对象,那么Student类必须遵循NSCoding协议,然后实现NSCoding中得两个方法. @interface Student : NSObject <NSCoding> 然后再.m文件中实现encodeWithCoder:(存)和initWithCoder:(读)方法,这样就告诉了程序这个对象应该怎么存,要存那些属性,以及需要怎么读! /** * 将某个对象写入