归档-ios
/****普通对象归档**/
NSString *homePath=NSHomeDirectory();
NSString *fileName=@"test.vse";
NSString *path=[homePath stringByAppendingPathComponent:fileName];
NSArray *array=@[@"abc",@"sea",@123];
BOOL success=[NSKeyedArchiver archiveRootObject:array toFile:path];
if (success) {
NSLog(@"success");
}
/**普通对象解归档***/
NSArray *newArray=[NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"%@",newArray);
/***第二种普通对象归档方式***/
NSString *homePath2=NSHomeDirectory();
NSString *fileName2=@"test2.vse";
NSString *path2=[homePath2 stringByAppendingPathComponent:fileName2];
NSMutableData *data=[NSMutableData data];
NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
NSArray *array2=@[@"abc222",@"se22a",@1233];
[archiver encodeInt:100 forKey:@"age"];
[archiver encodeObject:array2 forKey:@"name"];
[archiver finishEncoding];
BOOL success2=[data writeToFile:path2 atomically:YES];
if (success2) {
NSLog(@"success");
}
/***第二种普通对象解归档方式***/
NSData *data2=[NSData dataWithContentsOfFile:path2];
NSKeyedUnarchiver *unAchiver=[[NSKeyedUnarchiver alloc] initForReadingWithData:data2];
int age=[unAchiver decodeIntForKey:@"age"];
NSArray *name=[unAchiver decodeObjectForKey:@"name"];
NSLog(@"age=%d,name=%@",age,name);
//自定义对象归档
#import <Foundation/Foundation.h>
@interface User : NSObject <NSCoding>
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSString *email;
@property (nonatomic,copy) NSString *password;
@property (nonatomic,assign) int age;
@end
------------------------------
#import "User.h"
#define AGE @"age"
#define NAME @"name"
#define EMAIL @"email"
#define PASSWORD @"password"
@implementation User:NSObject
//对属性编码,归档时调用
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeInt:_age forKey:AGE];
[aCoder encodeObject:_name forKey:NAME];
[aCoder encodeObject:_email forKey:EMAIL];
[aCoder encodeObject:_password forKey:PASSWORD];
}
//对属性解码,解归档时调用
- (id)initWithCoder:(NSCoder *)aDecoder{
self=[super init];
if (self!=nil) {
_age=[aDecoder decodeIntForKey:AGE];
_name=[aDecoder decodeObjectForKey:NAME];
_email=[aDecoder decodeObjectForKey:EMAIL];
_password=[aDecoder decodeObjectForKey:PASSWORD];
}
return self;
}
//重写description
-(NSString *) description{
NSString *str=[NSString stringWithFormat:@"age=%d,name=%@,email=%@,password=%@",_age,_name,_email,_password];
return str;
}
@end
----------------使用---------------------
/***第三种自定义对象归档方式***/
User *user=[[User alloc] init];
user.name=@"caicai";
user.age=22;
user.email=@"adf@s.com";
user.password=@"skjdsfsd";
NSString *path3=[NSHomeDirectory() stringByAppendingPathComponent:@"user.hs"];
BOOL success3=[NSKeyedArchiver archiveRootObject:user toFile:path3];
if (success3) {
NSLog(@"success");
}
/***自定义对象解归档方式***/
User *user2=[NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"%@",user2);
归档-ios的更多相关文章
- iOS数据持久化-OC
沙盒详解 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文 ...
- iOS数据存储之属性列表理解
iOS数据存储之属性列表理解 数据存储简介 数据存储,即数据持久化,是指以何种方式保存应用程序的数据. 我的理解是,开发了一款应用之后,应用在内存中运行时会产生很多数据,这些数据在程序运行时和程序一起 ...
- iOS开发数据库-FMDB
前言 FMDB是以OC的方式封装了SQLite的C语言API,使用起来更加面向对象,省去了很多麻烦.冗余的C语言代码:对比苹果自带的Core Data框架,更加轻量级和灵活:提供了多线程安全的数据库操 ...
- iOS攻城狮修炼之路
自己总结的学习iOS的笔记,打造一个全面的知识体系,iOS攻城狮修炼之路[持续更新中] iOS学习笔记01-APP相关 iOS学习笔记02-UIScrollView iOS学习笔记03-UITable ...
- iOS--开发从入门到精通
前言: 从事iOS开发已有几个年头,平时对于iOS开发的知识积累都比较碎片化,为了更好的掌握开发技能, 索性整理iOS开发的知识体系,以便于后面进阶成iOS高级开发工程师. 一.iOS开发基础 开发设 ...
- IOS数据存储之归档/解档
前言: 前天学习了NSUserDefaults,我们知道NSUserDefaults不能保存自定义对象,所以我们今天来认识一下归档(NSKeyedArchiver)和解档(NSKeyedUnarchi ...
- Xcode5 + phoneGap2.9搭建ios开发环境-配置-测试-归档上传/phoneG...
前言: 小弟是做JAVA/Android的第一次搞这个ios,公司有mobile项目是使用phoneGap开发的,需要开发ios版本.什么都不会只能一点一点琢磨了……大神越过…… 原文链接:http: ...
- iOS阶段学习第18天笔记(Plist-Archiver-归档与解归档操作)
iOS学习(OC语言)知识点整理 一.归档与解归档的操作 1)归档是一个过程,将一个或多个对象存储起来,以便以后可以还原,包括将对象存入文件,以后再读取 将数据对象归档成plist文件 2)plist ...
- iOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档
1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每 ...
随机推荐
- C#中的五个访问修饰符
一.public, private, protected, internal, protected internal 1.public : 公开的, 公共的 2.private : 私有的 (只能在当 ...
- BZOJ 3181 BROJ
像我这种SB还是早点退役. #include<iostream> #include<cstdio> #include<cstring> #include<al ...
- python3爬虫初探(二)之requests
关于请求网页,不得不提requests这个库,这是爬虫经常用到的一个第三方库,用pip安装即可. requests用法很多,这里只写一些基础的,其他高级功能可参考官方文档. import reques ...
- yii2.0-rules验证规则应用实例
Rules验证规则: required : 必须值验证属性||CRequiredValidator 的别名, 确保了特性不为空. [['字段名1','字段名2'],required] //字段 ...
- Nodejs创建https服务器(Windows 7)
为了实验一下WebRTC,搭了个简单的https服务器.说说步骤: 生成OpenSSL证书 使用Nodejs的https模块建立服务器 OpenSSL 证书 我机子Windows 7,安装了Cygwi ...
- Inno_setup制作升级包必须面临的几个问题
Inno_setup制作升级包必须面临的几个问题 分类: c/c++/GamingAnyWhere JavaScript linux shell基础知识 2013-12-18 22:14 1496人阅 ...
- 转:服务器控件的 ID,ClientID,UniqueID 的区别
动态加载用户控件的怪问题 动态加载用户控件的时候,会因为调用一些控件的一些属性和方法而造成控件命名混乱. 因为add 一个用户控件或者 loadcontrol 的时候 如果没有指定控件的id,clie ...
- D - 排列
#include<cstdio> #include<algorithm> #include<string.h> using namespace std; #defi ...
- Redis 设计与实现读书笔记一 Redis List
list结构体 adlist.h/list(源码位置) /* * 双端链表结构 */ typedef struct list { // 表头节点 listNode *head; // 表尾节点 lis ...
- 《JavaScript Ninja》之挥舞函数
挥舞函数 匿名函数为什么如此重要 通常使用匿名函数的情况是,创建一个供以后使用的函数.例如,将匿名函数保存在一个变量里,将其作为一个对象的方法,或者是将匿名函数作为一个回调.-->在这些情况下, ...