//
// main.m
// OC5-文件归档
//
// Created by qianfeng on 15/6/23.
// Copyright (c) 2015年 qianfeng. All rights reserved.
//
#import <Foundation/Foundation.h>
//归档:把对象数据存储到文件的过程.
//反归档:从文件中读取数据到对象中的过程.
int main(int argc, const char * argv[]) {
@autoreleasepool {
#if 0
//用系统方法归档
//NSKeyedArchiver
NSMutableDictionary *mutdic =[NSMutableDictionary dictionaryWithObjectsAndKeys:@"one",@"1",@"two",@"2", nil];
[mutdic setValue:[NSDate date] forKey:@"date"];
[mutdic setValue:[NSNumber numberWithInt:123] forKey:@"num"];
[mutdic setValue:[@"ios" dataUsingEncoding:NSUTF8StringEncoding] forKey:@"data"];
bool ret =[NSKeyedArchiver archiveRootObject:mutdic toFile:@"/Users/qianfeng/Desktop/text/arch.text"];//文件不存在自动创建.
if(ret)
{
NSLog(@"文件归档成功");
}
else{
NSLog(@"文件归档失败");
}
//#else
//反归档
NSDictionary *dict =[NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/qianfeng/Desktop/text/arch.text"];
if (dict) {
NSLog(@"%@",dict);
}
#endif
#if 1
//归档
NSMutableDictionary *mutdic =[NSMutableDictionary dictionaryWithObjectsAndKeys:@"one",@"1",@"two",@"2", nil];
[mutdic setValue:[NSDate date] forKey:@"date"];
[mutdic setValue:[NSNumber numberWithInt:123] forKey:@"num"];
[mutdic setValue:[@"ios" dataUsingEncoding:NSUTF8StringEncoding] forKey:@"data"];
NSData *data =[NSKeyedArchiver archivedDataWithRootObject:mutdic];
//data =[NSKeyedArchiver archivedDataWithRootObject:mutdic];
BOOL ret =[data writeToFile:@"/Users/qianfeng/Desktop/text/data.text" atomically:YES];
if(ret)
{
NSLog(@"文件归档成功");
}
else{
NSLog(@"文件归档失败");
}
#else
//反归档
NSData *data =[NSData dataWithContentsOfFile:@"/Users/qianfeng/Desktop/text/data.text"];
NSDictionary *dict =[NSKeyedUnarchiver unarchiveObjectWithData:data];
if(dict)
{
NSLog(@"%@",dict);
}
#endif
#if 0
//手动归档
//创建一个空的可变data对象
NSMutableData *data =[NSMutableData data];//一定是可变的二进制对象(NSMutableData)
NSKeyedArchiver *archiver =[[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
NSArray *array =[NSArray arrayWithObjects:@"one",@"two",[NSNumber numberWithInt:123],[NSDate date],[@"ios" dataUsingEncoding:NSUTF8StringEncoding], nil];
NSMutableDictionary *dict =[NSMutableDictionary dictionaryWithObjectsAndKeys:@"5",@"five",@"6",@"six",[NSNumber numberWithInt:123],@"num1",[NSNumber numberWithFloat:23.1],@"num2", nil];
//对数组及字典进行编码
[archiver encodeObject:array forKey:@"array"];
[archiver encodeObject:dict forKey:@"dictionary"];
//完成编码
[archiver finishEncoding];
//写入文件
int ret= [data writeToFile:@"/Users/qianfeng/Desktop/text/data.text" atomically:YES];
if (ret) {
NSLog(@"文件归档成功");
}
else{
NSLog(@"文件归档失败");
}
//#else
//解归档
NSData *data =[NSData dataWithContentsOfFile:@"/Users/qianfeng/Desktop/text/data.text"];
NSKeyedUnarchiver *unarchiver =[[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSArray *array =[unarchiver decodeObjectForKey:@"array"];
NSDictionary *dict =[unarchiver decodeObjectForKey:@"dictionary"];
//完成解码
[unarchiver finishDecoding];
NSLog(@"array =%@",array);
NSLog(@"----------------");
NSLog(@"dict =%@",dict);
#endif
}
return 0;
}