demo下载:https://github.com/MartinLi841538513/JsonModelDemo2
简单说,就是dictionary to model. 专业一些就是:解析json数据。
可以为您省下大量的代码,时间,精力,还能提高准确度。
操作步骤:
一,引入JsonModel :这里我使用了pods, pod 'JSONModel'
二,对应url建立model,如:http://semantictec.com/tec/api/mm/category?source=sears&agent=123&client=ios
这里必然需要建立2个model:一个是category,一个是self。
这里我贴代码进来吧,大家注意看:
Cat.h
注意:1,继承JSONModel
2,创建Cat协议
3,实现所有或者部分对应属性(命名必须和Json属性名一模一样)
#import "JSONModel.h"@protocol Cat @end@interface Cat : JSONModel@property (strong, nonatomic) NSString* id;@property (strong, nonatomic) NSString* name;@property (assign, nonatomic) long products;@end
UserModel.h
注意:1,继承JSONModel
2,实现所有或者部分对应属性
3,对应到categories属性的地方,做如下处理
#import#import "Cat.h"@interface UserModel : JSONModel@property (strong, nonatomic) NSString* source;@property (strong, nonatomic) NSString* agent;@property (strong, nonatomic) NSString* client;@property (strong, nonatomic) NSArray * categories;@end
三,开始发送请求获取数据了
#import "ViewController.h"#import "UserModel.h"#import "JSONModelLib.h"@interface ViewController (){ UserModel *userModel;}@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. userModel = [[UserModel alloc] initFromURLWithString:@"http://semantictec.com/tec/api/mm/category?source=sears&agent=123&client=ios" completion:^(UserModel *model, JSONModelError *err) { NSLog(@"loans: %@",userModel); NSLog(@"%@",model); }];}
1,import :XXXModel.h JSONModelLib.h
2,这里以initFromURLWithString:请求数据为例(还有很多其他的方法)。
这里提供两种获取数据的方式:这里的userModel,model是一样的数据,你可以根据实际情况选择一种。
在上面的例子中,你添加了两个jsonModel类,如果还有三级,四级分类,是不是要添加更多。这样无疑也是麻烦的,而且浪费了一些资源。
其实,后来仔细想想,他们原理上是可以放在一个.h .m文件中的。后面我用实例证明了我的说法:
.h
#import@protocol Cat @end@interface Cat : JSONModel@property (strong, nonatomic) NSString* id;@property (strong, nonatomic) NSString* name;@property (assign, nonatomic) long products;@end@interface UserModel : JSONModel@property (strong, nonatomic) NSString* source;@property (strong, nonatomic) NSString* agent;@property (strong, nonatomic) NSString* client;@property (strong, nonatomic) NSArray * categories;@end
.m
#import "UserModel.h"@implementation Cat@end@implementation UserModel@end