zoukankan      html  css  js  c++  java
  • 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的,但是出现了一个问题不知道怎么解决,系统提示出来的是这个,实在不解,,

  • 相关阅读:
    vue vmodel input type=checkbox的问题
    springboot配置文件优先级
    原生js实现复制功能
    Long.valueOf和Long.parseLong的区别
    程序员学习参考
    国外开源项目
    .NET快速入门教程
    Microsoft Update Catalog 离线安装包下载
    php header示例代码
    CentOS下iptables设置
  • 原文地址:https://www.cnblogs.com/mudy/p/4815871.html
Copyright © 2011-2022 走看看