ios之归档demo
ios对自定义对象的归档。首先需要实现NSCoding与NSCopying接口
#import <Foundation/Foundation.h>
@interface Person : NSObject<NSCoding, NSCopying>
@property (copy,nonatomic)NSString *name;
@property(assign,nonatomic)NSInteger age;
@end
需要重写接口的3个方法
#import "Person.h"
@implementation Person
- (void)encodeWithCoder:(NSCoder *)aCoder {
    [aCoder encodeObject:_name forKey:@"name"];
    [aCoder encodeInteger:_age forKey:@"age"];
}
- (id)initWithCoder:(NSCoder *)aDecoder {
    if (self = [super init]) {
        _name = [aDecoder decodeObjectForKey:@"name"];
        _age =[aDecoder decodeIntegerForKey:@"age"];
    }
    return self;
}
//#pragma mark NSCoping
- (id)copyWithZone:(NSZone *)zone {
    Person *copy = [[[self class] allocWithZone:zone] init];
    copy.name = [self.name copyWithZone:zone];
    copy.age = self.age;
    return copy;
}
//////////////////////////////////////////
归档的两种方法:
(1)使用NSUserDefaults
// 保存
Person *person = [[Person alloc] init];
person.name = _text.text;
person.age = (NSInteger)[_age text]; NSData *data = [NSKeyedArchiver archivedDataWithRootObject:person];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"person"]; // 读取
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"person"];
NSArray *books = [NSKeyedUnarchiver unarchiveObjectWithData:data];
(2)使用写文件
// 保存文件目录
-(NSString*) appStorgeLocation{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory=[paths objectAtIndex:];//Documents目录
return [documentsDirectory stringByAppendingPathComponent:@"lee0000"];
} // 归档
Person *person = [[Person alloc] init];
person.name = _text.text;
person.age = (NSInteger)[_age text]; NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:person forKey:@"kArchivingDataKey"]; //archivingDate的encodeWithCoder方法被调用
[archiver finishEncoding];
//写入文件
[data writeToFile:[self appStorgeLocation] atomically:YES]; // 读取
NSData *data = [[NSMutableData alloc] initWithContentsOfFile:[self appStorgeLocation]];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; //获得类
Person *archivingData = [unarchiver decodeObjectForKey:@"kArchivingDataKey"];// initWithCoder方法被调用
[unarchiver finishDecoding];
ios之归档demo的更多相关文章
- 最全的iOS物理引擎demo
		概述 最全的iOS物理引擎demo,实现重力.碰撞.推力.摆动.碰撞+重力.重力弹跳.仿摩拜单车贴纸效果.防iMessage滚动效果.防百度外卖首页重力感应等效果! 详细 代码下载:http://ww ... 
- iOS苹果官方Demo合集
		Mirror of Apple’s iOS samples This repository mirrors Apple’s iOS samples. Name Topic Framework Desc ... 
- iOS中归档对象的创建,数据写入与读取
		归档(archiving)是指另一种形式的序列化,但它是任何对象都可以实现的更常规的模型.专门编写用于保存数据的任何模型对象都应该支持归档.比属性列表多了很良好的伸缩性,因为无论添加多少对象,将这些对 ... 
- iOS支付 IPAPayment demo  iTunes Conection里面添加测试帐号,添加商品,实现购买过程
		https://github.com/ccguo/IAPPaymentDemo 发一个demo 
- 【转】NO.2、Appium之IOS第一个demo
		接第一篇:Appium之iOS环境搭建 http://blog.csdn.net/clean_water/article/details/52946191 这个实例继承了unittest,重写了它的s ... 
- iOS 数据归档----温故而知新
		#import "StudyViewController.h" #import "person.h" @interface StudyViewControlle ... 
- iOS微信支付demo运行报错解决如下
		要接入微信支付的小伙伴,首先要下载一份官方demo(APP微信支付官方Demo下载),然后打开工程,准备大干一场. 1.编译报错 编译的时候居然直接报错了(orz) 错误提示: APP微信支付官方De ... 
- iOS archiveRootObject 归档失败问题
		归档失败问题出在路径上,NSHomeDirectory() NSString *stringPath = [NSSearchPathForDirectoriesInDomains(NSDocument ... 
- ios socket(基础demo)
		http://blog.sina.com.cn/s/blog_7a2f0a830101ecv4.html clinetSocket 1.viewcontroller.h @interface View ... 
随机推荐
- Java编程的逻辑 (56) - 文件概述
			本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ... 
- RocketMQ 部署
			1. 下载 下载RocketMQwget https://github.com/alibaba/RocketMQ/releases/download/v3.2.6/alibaba-rocketmq-3 ... 
- form的智能表单
			1.智能表单的介绍 其中,(1)中的使用格式使得form不会太臃肿. 2.使用规范 3.新属性 4.举例 二.程序 1.关于邮件的问题 <!DOCTYPE html> <head&g ... 
- 013.Zabbix的Items(监控项)
			一 Items简介 Items是从主机里面获取的所有数据,可以配置获取监控数据的方式.取值的数据类型.获取数值的间隔.历史数据保存时间.趋势数据保存时间.监控key的分组等. 通常情况下item由ke ... 
- 基于jquery的水平滚轴组件,多参数可设置。
			闲来无事,继续封装.此次封装的为水平滚轴组件,可选择滚动的距离大小.闲话不多说,直接上图. 参数说明: vis:4 中间区域可显示的 li 个数 scroll:4 ... 
- js控制手机端字体大小rem
			//得到手机屏幕的宽度 let htmlWidth = document.documentElement.clientWidth || document.body.clientWidth; if(ht ... 
- HDU5919 SequenceⅡ
			从后向前建主席树,以位置为下标建树,然后查询区间出现次数的第k/2大即可. 复杂度O(nlogn) #include<bits/stdc++.h> using namespace std; ... 
- luoguP4643 阿狸和桃子的挑战 思维
			看下数据范围: \(n \leq 14\),emmmm,状压\(dp\)的分 \(n \leq 10000, m \leq 100000\),emmmm.....???,这是什么数据范围? 再观察一下 ... 
- 【Tsinsen-A1486】树(王康宁)     点分治 + Trie
			A1486. 树(王康宁) 时间限制:1.0s 内存限制:512.0MB 总提交次数:455 AC次数:97 平均分:52.62 查看未格式化的试题 提交 试题讨论 试题来源 ... 
- BZOJ 1009 HNOI 2008 GT考试 递推+矩乘
			1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3679 Solved: 2254[Submit][Statu ... 
