MJExtension

长话短说下面我们通过一个列子来看下怎么使用

1、 先把框架拉进去你的项目

2、 首先我这次用到的json最外层是一个字典,根据数据的模型我们可以把这个归类为字典中有数组,数组中还有其他 针对于这种情况 我需要建立两个数据模型 一个是要获取其中的数组 另一个数组中的的City元素

                                                        代码后面讲解思路
#import <Foundation/Foundation.h>

@interface NSCity : NSObject
@property (nonatomic,strong)NSString *city;
@property (nonatomic,strong)NSString *h5_url;
@property (nonatomic,strong)NSNumber* ID;
@property (nonatomic,strong)NSString *deal_url;
@end
//  NSCity.m
// MJExtension example
//
// Created by tareba on 15/12/18.
// Copyright © 2015年 tanada. All rights reserved.
// #import "NSCity.h" @implementation NSCity
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
if ([key isEqualToString:@"id"]) {
self.ID=value;
}
}
@end
#import <Foundation/Foundation.h>

@interface NSDeals : NSObject
@property (nonatomic,strong)NSMutableArray *deals; @end
#import "NSDeals.h"
#import "MJExtension.h"
@implementation NSDeals 下面的方法是关键 + (NSDictionary *)mj_objectClassInArray
{
return @{
@"deals" : @"NSCity", };
}
@end
#import "ViewController.h"
#import "MJExtension.h" #import "NSCity.h"
@interface ViewController () @end
@implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://api.dianping.com/v1/deal/find_deals?appkey=4123794720&category=%E7%BE%8E%E9%A3%9F&city=%E9%83%91%E5%B7%9E&region=%E9%87%91%E6%B0%B4%E5%8C%BA&sort=2&sign=FB7A61EB742A4B697B666985348614C7A8F763A3"]];
NSURLSession *seesion = [NSURLSession sharedSession];
NSURLSessionDataTask *task =[seesion dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { NSDictionary *dic= [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; NSDeals *result =[NSDeals mj_objectWithKeyValues:dic]; for (NSCity *city in result.deals) {
NSLog(@"%lu",(unsigned long)result.deals.count);
NSLog(@"%@",city.deal_url);
} }];
[task resume];
} @end

这个方法是将json数据的层级关系,变成属性关系,下一层成为了上一层的属性,然后通过属性直接姐可以访问了。至于关键字成为属性,由于时间紧迫未来的及验证是否和平时利用 setvaluefor undefinekey的法解决是否相同 待验证后会尽快修改

MJExtension的更多相关文章

  1. MJExtension笔记(一)

    之前有说,看好的编程就去敲好的开源项目:一直觉得这个无从下手,但是这次跟着一点点敲MJExtension,我明白了这句话的深度:其实并不需要去找,每一个三方项目都有很多值得学习的地方:笔记一只记录在敲 ...

  2. iOS开发小技巧--利用MJExtension解决数据结构复杂的模型转换

    一.开发中难免会遇到,系统返回的数据中字典套集合,集合里面又套一层字典,然后字典里面还有字典或者集合等等的复杂结构的数据...MJExtension轻松搞定这类问题 1.解决方法一: 例:百思项目中帖 ...

  3. iOS开发——网络篇——JSON和XML,NSJSONSerialization ,NSXMLParser(XML解析器),NSXMLParserDelegate,MJExtension (字典转模型),GDataXML(三方框架解析XML)

    一.JSON 1.JSON简介什么是JSONJSON是一种轻量级的数据格式,一般用于数据交互服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典 ...

  4. MJExtension框架介绍

    MJExtension框架介绍 标签: MJExtension 2015-05-01 08:22 1120人阅读 评论(0) 收藏 举报  分类: Foundation(14)  版权声明:本文为博主 ...

  5. 正在使用MJRefresh & MJExtension的App

    框架地址:https://github.com/CoderMJLee已经有上百个App用到了MJRefresh & MJExtension框架(只列出了其中一部分App):

  6. iOS开源JSON解析库MJExtension

    iOS中JSON与NSObject互转有两种方式:1.iOS自带类NSJSONSerialization 2.第三方开源库SBJSON.JSONKit.MJExtension.项目中一直用MJExte ...

  7. MJExtension简介

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  8. MJExtension的使用:https://github.com/CoderMJLee/MJExtension

    MJExtension能做什么? MJExtension是一套字典和模型之间互相转换的超轻量级框架 MJExtension能完成的功能 字典(JSON) --> 模型(Model) 模型(Mod ...

  9. 新浪微博客户端(17)-集成MJExtension

    使用MJExtension框架将字典转换为模型 DJHomeViewController.m /** 载入新的微博数据 */ - (void)loadNewStatues { AFHTTPSessio ...

  10. 使用MJExtension中要注意的地方

    MJExtension git地址  https://github.com/CoderMJLee/MJExtension#JSON_Model Model contains model-array[模 ...

随机推荐

  1. Android SDK目录结构和工具介绍

    Android SDK目录结构和工具介绍是本文要介绍的内容,主要是来了解并学习Android SDK的内容,具体关于Android SDK内容的详解来看本文. AD: Android SDK目录结构和 ...

  2. iOS GCD详解

    前言 对初学者来说,GCD似乎是一道迈不过去的坎,很多人在同步.异步.串行.并行和死锁这几个名词的漩涡中渐渐放弃治疗.本文将使用图文表并茂的方式给大家形象地解释其中的原理和规律. 线程.任务和队列的概 ...

  3. DisplayMetircs 类

    Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题. 手机的分辨率信息是手机的一项重要信息,很好的是,Android ...

  4. 网站服务管理系统wdcp简介及功能特性

    WDCP是WDlinux Control Panel的简称,是一套用PHP开发的Linux服务器管理系统以及虚拟主机管理系统,,旨在易于使用Linux系统做为我们的网站服务器,以及平时对Linux服务 ...

  5. 最新的Android SDK安装攻略(动作要快,来晚就失效了)

    Android的环境搭建好折腾,光是下载Android SDK就折腾了好几天, 直接连接,速度接近于0,一行行红色的refused, 然后找软件翻*墙成功(不推荐,软件可能有后门) 但是...速度比老 ...

  6. 网络视频传输的服务质量(QoS)

    QoS(Qualityof Service)服务质量,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术.在正常情况下,如果网络只用于特定的无时间限制的应用系统,并不需要QoS,比如We ...

  7. VMware虚拟机与主机联通及配置上网

    vmware版本:10.0.0 build-1295980,安装redhat enterprise linux 5.8 一.物理机与虚拟机联通,但不联网 1.虚拟网络VMnet1设置: 此时,物理主机 ...

  8. T-SQL触发器

    触发器 对表进行增删改操作时,自动执行的一个操作.当操作一个表的同时,需要进行其它关联操作的时候,就可以用到触发器. 比如:下订单时,创建中的商品数量需要减少 比如:退票时,总的票量要增加 属于DDL ...

  9. WebStorm11 注册码

    这个注册方法我也是在贴吧上看到的:http://tieba.baidu.com/p/4160766032 注册方法 注册时选择“License server”输入“http://15.idea.lan ...

  10. 安装gVim

    从Vim官网下载其安装包,安装并首次运行后,开启控制台并执行如下命令: %HOMEDRIVE% cd %HOMEPATH% mkdir vimfiles cd vimfiles mkdir backu ...