iOS开发 Objective-C

关于MJExtension用法(估计很多人不知道如何使用吧)

2016-08-09  本文已影响2146人  Tanyfi

如何使用李明杰大牛的这个框架?

这里我只说明常用的几个方法:

- 模型里面套着模型(dic{dic}):

情形:
有个2个模型:一个Status模型,和一个User模型
Status模型: 有3个属性,一个ID 一个User,一个text

@property (nonatomic, copy) NSString *ID;
@property (nonatomic, copy) NSString *text;
@property (nonatomic, strong) User *user;

User模型:有3个属性, 一个name 一个profile_image_url,一个idstr

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *idstr;
@property (nonatomic, copy) NSString *profile_image_url;

结构如下:


此时只需要用MJExtension 的方法:

Status *status =[Status mj_objectWithKeyValues:dic]

这样就可以全部转成模型;

模型套着数组,数组里面又套着模型:

Person模型: 有2个属性,一个name 一个Books

@property (nonatomic, copy) NSString *name;
@property (nonatomic, strong) NSArray *books;

Books模型:有2个属性, 一个price一个name

@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) NSString *price;

结构如下:

结构.png

方法:现在Person类.m中告诉他你数组里面是什么模型:

     // Tell MJExtension what type model will be contained in statuses and ads.
[StatusResult mj_setupObjectClassInArray:^NSDictionary *{ 
return @{ 
    @"books" : @"Books", 
  // @"books" : [Books class],
       };
}];

然后在使用下面的这个方法就可以实现都转成模型:

Person *person = [Person objectWithKeyValues:dict];
   

有时候遇到服务器返回的属性名和关键字重名,这时候我们往往自定义名字,比如上面的 id 改成 ID,此时可以利用这个框架的一个方法处理,这样才可以接收到服务器的数据:

[Student mj_setupReplacedKeyFromPropertyName:^NSDictionary *{       return @{ @"ID" : @"id" };}];
上一篇下一篇

猜你喜欢

热点阅读