写点简单的代码,让开发更简单
Demo:http://files.cnblogs.com/files/sixindev/AutoArchiver.zip
优点:1.模型里无需写一行代码即可自动归档(调用方法2)
2.支持将NSDictionary 转化成模型,支持字典数组转换成模型数组
用法:只需要在模型里面引入 NSObject+JKCoding.h 头文件即可
方法1.字典转模型
NSDictionary *dic =@{ @"name":@"jakill", @"age":@"16", @"className":@"5年级二班", }; //将json字典转化成模型 Student *student = [Student objectFromDic:dic];
方法2:归档
//1.保存并返回Data NSData *modelData = [NSKeyedArchiver archivedDataWithRootObject:student]; //2.直接保存文件 NSString *file = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"Student.data"]; BOOL isArchiveOK=[NSKeyedArchiver archiveRootObject:student toFile:file]; if (!isArchiveOK) { NSLog(@"归档失败");//一般不会的 }
方法3:解档
Student *newStudent = [NSKeyedUnarchiver unarchiveObjectWithData:modelData];
这样很方便的实现对模型对象的归档,如果需要数据持久化,结合FMDB,直接保存NSData或直接保存JSON字符串(参考手思缓存),这样大大减少sqlite语句中众多属性名定义,以及后台数据变更所带来的麻烦.
扩展:利用Runtime 获取类成员属性实现FMDB的自动化,简化SqL语句
其它参考:
利用运行时实现自动归档
https://github.com/iKingsly/iKYerialization