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

  • 相关阅读:
    jvm参数陷阱
    concurrent mode failure
    17.Quick QML-SpinBox
    16.Quick QML-ButtonGroup、RadioButton、CheckBox
    15.Quick QML-TextEdit和TextArea
    14.Quick QML-TextInput和TextField详解
    13.Quick QML-RowLayout、ColumnLayout、GridLayout布局管理器介绍、并通过GridLayout设计的简易网站导航界面
    9.qml-property自定义属性
    macOS 系统安装Maven教程
    macOS系统上 为Github 托管项目的访问添加SSH keys
  • 原文地址:https://www.cnblogs.com/mudy/p/4815871.html
Copyright © 2011-2022 走看看