标签:
数据是在聚合数据上请求下来的:请求部分的代码
-(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的,但是出现了一个问题不知道怎么解决,系统提示出来的是这个,实在不解,,
标签:
原文地址:http://www.cnblogs.com/mudy/p/4815871.html