JSONModel的模型嵌套

來源:互聯網
上載者:User
JSONModel的模型嵌套 代碼:https://github.com/SunshineTraveller/JSONModelDemo 我們解析資料的時候會遇到嵌套的資料,解析的時候會用到嵌套的模型,下面說下JSONModel嵌套的一些注意問題。 1.先簡單說下JSONModel的簡單用法 1.1單層模型  .h檔案      

#import <JSONModel/JSONModel.h>


@interface WX_FriendZonePeiTuModel :JSONModel


// 朋友圈配圖

//單張

@property (nonatomic,copy)NSString *pic;

// 多張

@property (nonatomic,strong)NSArray *data;

@property (nonatomic,copy)NSString *orders;

@property (nonatomic,copy)NSString *pid;     // 後台為id,用pid代替

@property (nonatomic,copy)NSString *name;

@end



.m檔案



#import "WX_FriendZonePeiTuModel.h"


@implementation WX_FriendZonePeiTuModel

// pid代替id

+(JSONKeyMapper *)keyMapper {

    return [[JSONKeyMapperalloc]initWithModelToJSONDictionary:@{

                                                                  @"pid":@"id"

                                                                  }];

}

// 所有的屬性都為可選類型,

+(BOOL)propertyIsOptional:(NSString *)propertyName {


    /* 可以設定某個屬性為可選,下面的代碼意為name為可選, 後台資料中沒有name鍵

    if ([propertyName isEqualToString:@"name"]) {

        return YES;

    }

     */     

    // 所有屬性可選

    returnYES;

}


@end

// 模型用法

WX_FriendZonePeiTuModel *model = [[WX_FriendZonePeiTuModelalloc]initWithDictionary:dicterror:nil]; dict為解析的字典
2.模型嵌套的使用 2.1建立模型 .h檔案

#import <JSONModel/JSONModel.h>


// 內層模型

@interface WX_MoudleItemModel :JSONModel


@property (nonatomic,strong)NSArray  *data;

@property (nonatomic,copy)NSString *orders;

@property (nonatomic,copy)NSString *addTime;

@property (nonatomic,copy)NSString *content;

@property (nonatomic,copy)NSString *fid;

@property (nonatomic,copy)NSString *name;

@property (nonatomic,copy)NSString *type;

@property (nonatomic,strong)NSArray <NSDictionary *> *pics;


@end


// 外層模型

@protocolWX_MoudleItemModel;  // 內層模型協議。。。。

@interface WX_MoudleSectionModel :JSONModel

@property (nonatomic,copy)NSString *addTime; // section時間

@property (nonatomic,strong)NSArray <WX_MoudleItemModel> *lists;  // 數組元素為內層模型。。。

@property (nonatomic,copy)NSString *rownum;

@end



.m檔案

#import "WX_MoudleSectionModel.h"


@implementation WX_MoudleItemModel


+(BOOL)propertyIsOptional:(NSString *)propertyName {

    returnYES;

}


@end

@implementation WX_MoudleSectionModel


+(BOOL)propertyIsOptional:(NSString *)propertyName {

    returnYES;

}


@end





2.2  cell檔案

在cell的.h檔案裡,直接引入外層模型.h檔案 

#import "WX_FriendMutipleView.h"

#import <UIKit/UIKit.h>

@class WX_FriendZonePeiTuModel;

@interface WX_FriendZonePeiTuCell :UICollectionViewCell


/** weitu */

@property (nonatomic,strong)UIImageView *peiTuImV;

/** content */

@property (nonatomic,strong)UILabel     *content;

/** model */

@property (nonatomic,strong)WX_FriendZonePeiTuModel *model;

// 內層模型為collectionView的cell(外層模型為sectionHeader,寫在reusebleView裡)

@property (nonatomic,strong)WX_MoudleItemModel      *item;    

@property (nonatomic,strong)WX_FriendMutipleView *mutiView;


@end


cell 的.m檔案裡

-(void)setItem:(WX_MoudleItemModel *)item {

     /*

      你的代碼...

     */ }

2.3  viewController檔案

.m檔案

#import "WX_MyFriendZoneViewController.h"

#import "WX_MoudleSectionModel.h"        // 引入外層模型.h檔案

@class WX_MoudleItemModel;                // 內層模型

模型解析

-(void)xxx {

        if (data.count) {

            for (NSDictionary *modelDictin data) {

                WX_MoudleSectionModel *model = [[WX_MoudleSectionModelalloc]initWithDictionary:modelDicterror:nil];

                [weakSelf.peiTuArraddObject:model];

            }

       

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.