技术文章分类(180)

技术随笔(11)

JsonModel的使用(ios程序员必须熟练掌握,太激动了)

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 <JSONModel/JSONModel.h>
#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<Cat>* 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 <JSONModel/JSONModel.h>

@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<Cat>* categories;
@end

 

.m

#import "UserModel.h"

@implementation Cat
@end

@implementation UserModel
@end

 

posted @ 2014-08-26 11:50  坤哥MartinLi  阅读(1214)  评论(0编辑  收藏  举报