数据存储(NSCoding)
来源:互联网 发布:阿松为什么被禁 知乎 编辑:程序博客网 时间:2024/06/05 23:55
NSCoding 是归档与解档的意思.
1.首先要获取存储的沙盒里,必须获取沙盒的路径.
/**沙盒的路径, 要将stu.data文件存储的Documents文件夹中,stringByAppendingPathComponent这个方法不用再拼接"/"*/NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"stu.data"];
/*创建数据模型/
Person 父类 属于NSObject
Strudent 子类 属于 Person的子类
#import <Foundation/Foundation.h>@interface Person : NSObject<NSCoding>/**这里必须采用NSCoding这个协议*//**姓名*/@property (strong, nonatomic) NSString *name;/**年龄*/@property (assign, nonatomic) NSInteger age;@end/**.m文件,实现NSCoding协议*/#import "Person.h"@implementation Person/**当归档的时候会调用*/- (void)encodeWithCoder:(NSCoder *)aCoder{ /**把属性归档起来,并设置key*/ [aCoder encodeObject:self.name forKey:@"name"]; [aCoder encodeInteger:self.age forKey:@"age"];}/**当解档的时候用调用*/- (id)initWithCoder:(NSCoder *)aDecoder{ if (self = [super init]){ /**根据key解档存储的文件*/ self.name = [aDecoder decodeObjectForKey:@"name"]; self.age = [aDecoder decodeIntegerForKey:@"age"]; } return self;}@end/**strudent类*/#import <Foundation/Foundation.h>#import "Person.h"@interface Strudent : Person@property (strong, nonatomic) NSString *no;@property (assign, nonatomic) NSInteger store;@end/**.m文件实现NSCoding协议*/#import "Strudent.h"@implementation Strudent/**归档的实现的方法*/- (void)encodeWithCoder:(NSCoder *)aCoder{/**继承父类后,首先要先调用父类的方法传入aCoder*/ [super encodeWithCoder:aCoder]; [aCoder encodeObject:self.no forKey:@"no"]; [aCoder encodeInteger:self.store forKey:@"store"];}/**解档实现的方法*/- (id)initWithCoder:(NSCoder *)aDecoder{- /**继承父类后,首先要先调用父类的方法传入aDecoder*/ if (self = [super initWithCoder:aDecoder]) { self.store = [aDecoder decodeIntegerForKey:@"store"]; self.no = [aDecoder decodeObjectForKey:@"no"]; } return self;}@end
保存
/**新建数据模型*/ Strudent *stu = [[Strudent alloc] init]; stu.name = @"xingzai"; stu.age = 27; stu.no = @"68"; stu.store = 100; [NSKeyedArchiver archiveRootObject:stu toFile:path]; NSLog(@"%@",path);
读取
Strudent *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path]; NSLog(@"%@- %d -- %@ --%d",stu.name,stu.age,stu.no,stu.store);
0 0
- 数据存储(NSCoding)
- <NSCoding>存储数据 archivedDataWithRootObject unarchiveObjectWithData
- <NSCoding>存储数据 archivedDataWithRootObject unarchiveObjectWithData
- <NSCoding>存储数据 archivedDataWithRootObject unarchiveObjectWithData
- <NSCoding>存储数据 archivedDataWithRootObject unarchiveObjectWithData
- <NSCoding>存储数据 archivedDataWithRootObject unarchiveObjectWithData
- <NSCODING> 存储数据 NSUSERDEFAULTS 读取和写入
- ios 沙盒 NSCoding 归档 数据存储
- NSCoding归档数据持久化存储
- iOS数据存储之--NSCoding
- [数据存储之一]NSCoding协议练习
- 数据存储之归档-NSCoding协议
- NSCoding协议,遵循了NSCoding协议的数据模型,就可以利用归档进行数据存储了
- <NSCODING> 存储数据&n…
- 归档 NSCoding 数据存储小结《IOS编程》 读后总结
- iOS 数据存储 归档普通对象 NSCoding NSKeyedArchiver
- iOS数据持久化---NSCoding
- 【iOS开发-75】iOS数据存储的三种简单方式:plist、preference以及用NSCoding存储对象
- POJ 2096 Collecting Bugs (概率dp)
- 使用ButterKnife注解框架实现View的点击操作
- 黑马程序员——Java中集合学习总结
- CSS3实现的响应式字体:自适应视图窗口大小的新单位
- 关于svn提示版本过旧的处理办法(实际svn版本已是最细)
- 数据存储(NSCoding)
- 明确一下,哪些类型放在data区
- SurfaceView
- Android Studio项目目录结构
- Leetcode #48 Rotate Image
- VFS(虚拟文件系统)
- Entity Framework中数据缓存的问题
- tar.xz文件如何解压
- redis中各种数据类型对应的jedis操作命令