美文网首页iOS开发 Objective-C
关于MJExtension用法(估计很多人不知道如何使用吧)

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

作者: Tanyfi | 来源:发表于2016-08-09 18:42 被阅读2146次

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

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

    - 模型里面套着模型(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" };}];
    

    相关文章

      网友评论

        本文标题:关于MJExtension用法(估计很多人不知道如何使用吧)

        本文链接:https://www.haomeiwen.com/subject/otedsttx.html