MJExtension使用

数据是在聚合数据上请求下来的:请求部分的代码

-(void)requestData{

    NSString *httpUrl = @"http://apis.baidu.com/heweather/weather/free";

    NSString *httpArg = @"city=beijing";

    [self request: httpUrl withHttpArg: httpArg];

}

 

 

-(void)request: (NSString*)httpUrl withHttpArg: (NSString*)HttpArg {

    

    NSString *urlStr = [[NSString alloc]initWithFormat: @"%@?%@", httpUrl, HttpArg];

    NSURL *url = [NSURL URLWithString: urlStr];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: url cachePolicy: NSURLRequestUseProtocolCachePolicy timeoutInterval: 10];

    [request setHTTPMethod: @"GET"];

    [request addValue: @"b8f038fbad9435f8a3f3af48936c85c4" forHTTPHeaderField: @"apikey"];

    [NSURLConnection sendAsynchronousRequest: request

                                       queue: [NSOperationQueue mainQueue]

                           completionHandler: ^(NSURLResponse *response, NSData *data, NSError *error){

                               if (error) {

                                   NSLog(@"Httperror: %@%ld", error.localizedDescription, error.code);

                               } else {

                                   

                                   [self jsonToObject:data];

                                   

                               }

                           }];

}

 在这里遇到的问题是,我想当然的以为这个框架能够直接的将json数据转换为我们想要的模型,其实核心代码就真的只有一句话(重要的话要说三遍)

其实,Basic *basic = [Basic objectWithKeyValues:resDic[@"basic"]];就是这句了,(不过既然传入的参数可以是人意类型的,那么为什么必须是字典才行。既然说了是键值,为什么又让传入的参数可以是任意类型的,这个不解,总之,)总之,你传入一个字典进去,还真的可以。

需要注意的是,咱们创建的模型对象里的属性名称,需要对应字典的key值,那么问题来了,如果 服务器传过来的 字典数组里的字典的Key,是OC里的关键字,而使用MJExtention的前提是,模型里的属性名和数组的key一致才行(区分大小写),怎么办?

使用replacedKeyFromPropertyName

使用方法:1.在模型类.m文件引入"MJExtension.h"

    2.实现方法

+ (NSDictionary *)replacedKeyFromPropertyName

{

    return @{@“非关键字的属性名” : @“数组的key”};

}

附上图:

 

 

2015-09-17 11:20:27.124 MJExtensionDemo[2301:59353] basic:北京,中国,CN101010100,39.904000,116.391000

2015-09-17 11:20:27.125 MJExtensionDemo[2301:59353] aqi:211,1,59,45,107,211,重度污染,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 对了,在在请求数据的时候,本来是想用afn的,但是出现了一个问题不知道怎么解决,系统提示出来的是这个,实在不解,,

posted @ 2015-09-17 11:40  脱贫致富,多喝热水  阅读(551)  评论(0编辑  收藏  举报