iOS開發——MJExtension複雜數組用法

來源:互聯網
上載者:User

標籤:

最近在看MJExtension的Demo,發現了一個plist檔案直接轉數組模型的方法。以前研究過但是淺嘗輒止沒有解決,這幾天有時間,好好看了看,找到瞭解決辦法,與大家分享。

如果大家的項目中有這種嵌套數組對象的情況的plist檔案,如:

即要轉換成一個對象中存有另一個對象數組的情況。

當沒有這種複雜嵌套時,我們這樣寫:

   1:  -(NSArray *)groups{
   2:      if (!_groups) {
   3:   
   4:          _groups = [Group objectArrayWithFilename:@"cars_total.plist"];
   5:      }
   6:      return _groups;
   7:  }
但是這樣的話groups中的cars屬性會被賦成一個 “含有NSDictionary的NSArray”變數,而不是“含有Car類的NSArray”

並沒有真正的轉成模型,一開始我的解決方案是重寫setCars方法,

//-(void)setCars:(NSArray *)cars{////    NSLog(@"%s",__func__);//    _cars = [NSMutableArray array];//    _cars = [Car modelArrayWithDictionaries:cars];//}

modelArrayWithDictionaries是我自己實現的一個Dictionary數組轉對象數組的方法,寫的不優雅就不貼出來了。

 

但是我們實際上是可以這樣寫的:

寫法一:

在Group模型中

   1:  //+(NSDictionary *)objectClassInArray{
   2:  //    return @{@"cars":@"Car"};
   3:  //}

寫法二:

在groups屬性的getter裡

   1:  (NSArray *)groups{
   2:      if (!_groups) {
   3:   
   4:          [Group setupObjectClassInArray:^NSDictionary *{
   5:              return  @{@"cars":@"Car"};
   6:          }];
   7:          _groups = [Group objectArrayWithFilename:@"cars_total.plist"];
   8:      }
   9:      return _groups;
  10:  }

 

就可以實現直接轉換成對象啦!

 

 

 

關於MJExtension Demo中的其他發現:

MJExtension的Demo中將 [x setupObjectClassInArray:…]放到了MJExtensionConfig

類的+load方法中,Demo中其他地方沒有任何對該類或該方法的引用。

經過查詢,發現原來load是OC中在載入一個類的時候自動調用的方法,真是一個進行配置的好方法!

 

 

參考來源:

Objective-C 類方法 load 和 initialize 的區別

iOS MJExtension架構之字典數組轉模型數組

CoderMJLee/MJExtension

iOS開發——MJExtension複雜數組用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.