大多来说我们喜欢用一些,jsonkit和jsonmodel的第三方的库来解析,有没有简单的办法实现一个model呢,答案当然是有的。KVC模式
1、实现简单的model
//
// PeopleModel.h
// WUmeng
//
// Created by Mac on 16/4/13.
// Copyright © 2016年 wmeng. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface PeopleModel : NSObject
@property(nonatomic,copy) NSString *name;
@property(nonatomic,copy) NSString *age;
@end
//
// PeopleModel.m
// WUmeng
//
// Created by Mac on 16/4/13.
// Copyright © 2016年 wmeng. All rights reserved.
//
#import "PeopleModel.h"
@implementation PeopleModel
//必需实现这个方法,防止后台返回的字段多一个后者少一个会崩溃的问题
-(void)setValue:(id)value forUndefinedKey:(NSString *)key
{
}
@end
这样我们就简单实现了一个model对象,如何使用呢?KVC
//后台传过来的字典
NSDictionary *peopleDic = @{@"name":@"小明",@"age":@"18"};
//赋值
PeopleModel *model = [PeopleModel new];
[model setValuesForKeysWithDictionary:peopleDic];
这样我们就很方便的使用了。
2、如果后台传过来的id和model的字段不一致,并且由数组的话。
//
// ListModel.h
// WUmeng
//
// Created by Mac on 16/4/13.
// Copyright © 2016年 wmeng. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface ListModel : NSObject
@property(nonatomic,copy) NSString *name;
@property(nonatomic,copy) NSString *id1;
@property(nonatomic,strong) NSArray *listAry;
@end
//
// ListModel.m
// WUmeng
//
// Created by Mac on 16/4/13.
// Copyright © 2016年 wmeng. All rights reserved.
//
#import "ListModel.h"
@implementation ListModel
-(instancetype)init{
self = [super init];
if (self) {
self.listAry = [NSMutableArray array];
}
return self;
}
//这个方法一定要实现不然,后台返回的数据多或者少的时候就会崩溃
-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
//如果和后台返回的字段冲突可以使用这个进行转换
if ([key isEqualToString:@"id"]) {
self.id1 = value;
}
}
@end
实现方法:
//后台传过来的字典
NSDictionary *listDic = @{@"name":@"小明",@"id":@"18",@"listAry":@[@"1",@"2"]};
//赋值
ListModel *listModel = [ListModel new];
[model setValuesForKeysWithDictionary:peopleDic];
[listModel setListAry:listDic[@"listAry"]];
是不是so easy!!