第一步: pod 'MJExtension'
第二步:#import <MJExtension/MJExtension.h>
第三步:如果返回的字典中的key与model中的属性不对应在model的.m文件中加入以下代码
+(NSDictionary *)mj_replacedKeyFromPropertyName
{
return @{
@"userId" : @"id",
};
}
第四步:如果要处理字典中的返回值,在model的.m文件中实现对应属性的set方法,如下:要把服务器返回的时间戳毫秒改为妙
-(void)setCreateDate:(NSTimeInterval)createDate
{
_createDate = createDate/100;
}
第五部:如果要把自己创建的model存储到本地的NSUserdefaults中,要在mode的.m文件的顶部 加上MJCodingImplementation
@implementation UserMessage
//存储到本地的时候需要编码解码
MJCodingImplementation
如果返回的字典中的key与model中的属性不对应在model的.m文件中加入以下代码
+(NSDictionary *)mj_replacedKeyFromPropertyName
{
return @{
@"userId" : @"id",
};
}
//如果要处理字典中的返回值,在model的.m文件中实现对应属性的set方法,如下:要把服务器返回的时间戳毫秒改为妙
-(void)setCreateDate:(NSTimeInterval)createDate
{
_createDate = createDate/100;
}
总结:
以下代码实现了字典模型转换和model在NSUserdefaults中的存取
//dic是后端返回的NSDictionaty
UserMessage * userMessage = [UserMessage mj_objectWithKeyValues:dic];
//存储model对象到本地
[Common saveArchiveObj:userMessage fileName:@“存储的字符串”];
//从本地读取model
[Common readArchiveObjWithfileName:@“存储字符串”];
//从本地删除model
[Common deleteArchiveObjWithfileName:@“存储字符串”];
//下面是存储,获取,删除的实现
+ (void)saveArchiveObj:(id)archiveObj fileName:(NSString *)fileName {
if ([archiveObj isKindOfClass:[NSNull class]] || !fileName || [fileName isEqualToString:@""]) return;
[NSKeyedArchiver archiveRootObject:archiveObj toFile:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:fileName]];
}
+ (id)readArchiveObjWithfileName:(NSString *)fileName {
return (fileName && ![fileName isEqualToString:@""]) ? [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:fileName]] : nil;
}
+ (void)deleteArchiveObjWithfileName:(NSString *)fileName {
if (!fileName || [fileName isEqualToString:@""]) return;
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:fileName];
NSFileManager *fileMgr = [NSFileManager defaultManager];
[fileMgr removeItemAtPath:filePath error:nil];
}
、、、、、、、、、、、、、、、、、、、、、、、、、、
如果model中包含一个数组,这个数组里边存放的是另外一个model
比如TopicModel中包含一个CommentModel的数组
1、TopicModel的.h文件中有评论数组commentArray
@property(nonatomic,strong)NSArray * commentArray;
2、在TopicModel的.m文件中添加如下代码
+ (NSDictionary *)mj_objectClassInArray
{
return @{@"commentArray": @"CommentModel"};
}
将字典数组转成model数组 mj_objectArrayWithKeyValuesArray
eg:
NSArray * modelArray= [TopicModel mj_objectArrayWithKeyValuesArray:@[dic,dic]];
将model数组转成字典数组 mj_keyValuesArrayWithObjectArray
eg:
NSArray * dicArray = [TopicModel mj_keyValuesArrayWithObjectArray:@[model,model]];