【iOS开发-存储】使用NSCoding归档和反归档
来源:互联网 发布:linux ctrl alt f11 编辑:程序博客网 时间:2024/04/29 12:15
iOS开发中要想存储对象可以使用NSCoding,要想存储的对象必须实验NSCoding协议
比如我们要存储一个Student对象,那么Student类必须遵循NSCoding协议,然后实现NSCoding中得两个方法。
@interface Student : NSObject <NSCoding>
然后再.m文件中实现encodeWithCoder:(存)和initWithCoder:(读)方法,这样就告诉了程序这个对象应该怎么存,要存那些属性,以及需要怎么读!
/** * 将某个对象写入文件时会调用 * 在这个方法中说清楚哪些属性需要存储 */- (void)encodeWithCoder:(NSCoder *)encoder{ [encoder encodeObject:self.no forKey:@"no"]; [encoder encodeInt:self.age forKey:@"age"]; [encoder encodeDouble:self.height forKey:@"height"];}
/** * 从文件中解析对象时会调用 * 在这个方法中说清楚哪些属性需要存储 */- (id)initWithCoder:(NSCoder *)decoder{ if (self = [super init]) { // 读取文件的内容 self.no = [decoder decodeObjectForKey:@"no"]; self.age = [decoder decodeIntForKey:@"age"]; self.height = [decoder decodeDoubleForKey:@"height"]; } return self;}
控制器中得读写方法。
- (IBAction)save { // 1.新的模型对象 Student *stu = [[Student alloc] init]; stu.no = @"42343254"; stu.age = 20; stu.height = 1.55; // 2.归档模型对象 // 2.1.获得Documents的全路径 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; // 2.2.获得文件的全路径 NSString *path = [doc stringByAppendingPathComponent:@"stu.data"]; // 2.3.将对象归档 [NSKeyedArchiver archiveRootObject:stu toFile:path];}
反归档(读取)
- (IBAction)read { // 1.获得Documents的全路径 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; // 2.获得文件的全路径 NSString *path = [doc stringByAppendingPathComponent:@"stu.data"]; // 3.从文件中读取MJStudent对象 Student *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path];}
0 0
- 【iOS开发-存储】使用NSCoding归档和反归档
- ios 沙盒 NSCoding 归档 数据存储
- iOS-NSCoding归档
- iOS开发之归档(NSKeyedArchiver)和反归档(NSKeyedUnarchiver)
- 数据存储之归档和反归档
- iOS归档、反归档
- iOS 归档 反归档
- IOS开发中的归档与反归档
- iOS中实现归档和反归档
- iOS开发归档存储
- 归档和反归档
- runtime使用篇----归档和反归档
- ios-day12-04(ios开发中数据存储之NSKeyedArchiver归档(NSCoding)、普通对象如何归档、普通对象的子类如何归档)
- iOS 归档(NSKeyedArchiver + NSCoding)
- 归档 NSCoding 数据存储小结《IOS编程》 读后总结
- iOS 数据存储 归档普通对象 NSCoding NSKeyedArchiver
- iOS 使用plist和归档存储数据
- iOS归档与反归档
- 谷歌Volley网络框架讲解——第一篇
- ios获取昨天的日期
- 利用结构体类型,编程计算一名同学5门课的平均分
- android获取屏幕宽高与获取控件宽高
- 4.17
- 【iOS开发-存储】使用NSCoding归档和反归档
- zzuli 1731
- (转)深刻理解Linux进程间通信(IPC)
- NGINX安装时make[1]: *** [/usr/local/pcre//Makefile] Error 127
- 谷歌Volley框架讲解——第二篇
- FJNU校赛I题(dfs)
- java 正则表达式调用总结
- 美国个人信用评分系统及其启示
- 注意力集中训练的十个方法