iOS的归档与解档
来源:互联网 发布:ipad录屏软件 编辑:程序博客网 时间:2024/04/30 07:21
归档与解档也是iOS中对象保存与读取的一种方式,对系统的对象归档与解档比较容易,而对自定义类的对象就要继承协议。
1.系统对象的解档与归档
NSString *path = @"/Users/gph/Desktop/1.plist"; NSArray *array = [[NSArray alloc]initWithObjects:@"One",@"Two",@"Three", nil]; NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"One",@"1",@"Two",@"2",@"Three",@"3", nil]; //归档 NSMutableData *data = [[NSMutableData alloc]init]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data]; [archiver encodeObject:array forKey:@"array"]; [archiver encodeObject:dic forKey:@"dic"]; [archiver finishEncoding]; [data writeToFile:path atomically:YES]; //解档 NSData *data2 = [[NSData alloc]initWithContentsOfFile:path]; NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data2]; NSDictionary *tmpDic = [unarchiver decodeObjectForKey:@"dic"]; NSArray *tmpArr = [unarchiver decodeObjectForKey:@"array"]; NSLog(@"%@",tmpArr); NSLog(@"%@",tmpDic);
2.自定义类的对象解档与归档
一个完整的应用需要考虑方方面面,比如内存警告,比如转入后台,就要将对象进行保存。但对自定义类对象归档的步骤与前面类似,差别是先继承NSCoding协议,先定义一个UserItem类。UserItem.h文件如下
#import <Foundation/Foundation.h>@interface UserItem : NSObject<NSCoding>@property (nonatomic, copy) NSString* name;@end
UserItem.m文件如下
@implementation UserItem//归档- (id)initWithCoder:(NSCoder *)aDecoder{ self.name = [aDecoder decodeObjectForKey:@"name"]; return self;}//解档- (void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:self.name forKey:@"name"];}@end
归档与解档代码:
UserItem* user = [[UserItem alloc] init]; user.name = @"独孤求败"; NSMutableData* data = [[NSMutableData alloc]init]; NSKeyedArchiver* archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; [archiver encodeObject:user forKey:@"user"]; [archiver finishEncoding]; //从data里面拿出对象 NSKeyedUnarchiver* unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; UserItem* user2 = [unarchiver decodeObjectForKey:@"user"]; [unarchiver finishDecoding]; NSLog(@"%@",user2.name);
0 0
- iOS的归档与解档
- IOS 对象的归档与解档
- iOS对象的归档与解档
- iOS swift-归档与解档
- iOS解档归档
- iOS 解档归档
- ios-归档解档
- ios 归档解归档
- iOS归档与反归档
- iOS归档与反归档
- Linux的归档与解归档
- 数据的归档与解归档
- iOS练习 微博QQ oAuth授权 MJExtension的模型归档与解归档
- 解档与归档
- 归档与解档
- 归档与解归档
- 归档与解归档
- 归档与解归档
- 进程间通信之匿名管道和命名管道
- 加100是完全平方数
- MFC控件与相应的对象关联
- WP二维码识别
- 操作系统 - 进程间的通信方式:
- iOS的归档与解档
- yum 出现Existing lock /var/run/yum.pid: another copy is running as pid:11824
- IOS开发之----四舍五入问题
- Java数组操作的10大方法
- 绪论思维导图
- iOS客户端与PHP服务端的简单交互
- CSS浮动
- Fragment开发实战(一)
- 阶乘的运算