工具github地址:https://github.com/linhaosunny/LSXExtension
? ? ? ?在開發(fā)中經(jīng)常要將plist文件或者json生成的字典數(shù)組生成模型對應(yīng)的屬性頭文件,在創(chuàng)建模型屬性頭文件后,如果實際工程中用到 了字典數(shù)組中的大部分屬性,如果屬性個數(shù)比較多的情況,手敲代碼去寫這些屬性是一件非常費時而且容易出錯的事情,通過下面的工具可以輕松實現(xiàn)以上代碼的頭 文件的生成提高開發(fā)效率。
// 新增功能 深層次將plist或者json轉(zhuǎn)換成模型頭文件
支持多層次的json或者plist文件生成對應(yīng)的模型頭文件支持多層次的json或者plist文件生成對應(yīng)的模型頭文件。
6.強(qiáng)大的plist,json數(shù)據(jù)轉(zhuǎn)模型功能一句代碼實現(xiàn),比MJExtension更簡單。
*對比MJExtension
如MJExtension如果模型文件中還存在模型數(shù)據(jù).m文件必須實現(xiàn)如下方法:- (NSDictionary *)objectClassInArray;
如下圖LTDealModel中包含了另外一個模型LTBusinessesModel:
.m文件實現(xiàn)如下方法
*LSXExtension 不需要實現(xiàn)如下方法.m文件不需要寫任何代碼
*網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)模型實測圖如下:
模型中包含模型數(shù)組,字典也可以轉(zhuǎn)出來,
*工具自帶測試程序效果如下,讀取的是plist文件
5.new(新功能)
增加深層次對plist文件或者json文件轉(zhuǎn)換成模型頭文件。
如在plist 文件中屬性為字典數(shù)組(NSArray <NSDictionary *>*),或者字典(NSDictionary*):
也能轉(zhuǎn)換成模型頭文件,會在對應(yīng)的路徑中生成對應(yīng)的以屬性名首字母大寫的頭文件如下圖:
首個頭文件中會引用生成的新的模型類型:
字典類型不再顯示替換成模型類型NSDictionary ===> xxxModel
數(shù)組類型會范型引用真實類型 ===>
//====================================================
如將一個status.plist生成對應(yīng)的StatusModel.h文件
導(dǎo)入LSXExtension.framework后?
1.包含如下頭文件?
#import "LSXExtension.h"?
2.使用如下方法生成對應(yīng)的模型頭文件
第一個參數(shù):工程中plist文件名稱
第二個參數(shù):需要轉(zhuǎn)換的數(shù)據(jù)部分字典中的key
第三個參數(shù):模型名稱
第四個參數(shù):生成文件路徑
?[PropertyCodeMake propertyCodeMakeWithPlist:@"status.plist" andDataKey:@"statuses" andModelName:@"StatusModel" andOutFilePath:@"/Users/lishaxin/Desktop"];
3.也可以將一個json轉(zhuǎn)換后的字典數(shù)組生成對應(yīng)的模型頭文件
+ (void)propertyCodeMakeWithDictionaryArray:(NSArray *)array andModelName:(NSString *) modelName andOutFilePath:(NSString *) outPath;
4.生成效果如下:
//
// StatusModel.h
//
//
//? Created by 李莎鑫 on 2017/03/22.
//? Copyright ? 2017年 李莎鑫. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface StatusModel : NSObject
// > NSString source
@property (nonatomic, copy) NSString *source;
// > NSNumber reposts_count
@property (nonatomic, assign) NSNumber *reposts_count;
// > NSArray pic_urls
@property (nonatomic, strong) NSArray *pic_urls;
// > NSString created_at
@property (nonatomic, copy) NSString *created_at;
// > NSNumber attitudes_count
@property (nonatomic, assign) NSNumber *attitudes_count;
// > NSString idstr
@property (nonatomic, copy) NSString *idstr;
// > NSString text
@property (nonatomic, copy) NSString *text;
// > NSNumber comments_count
@property (nonatomic, assign) NSNumber *comments_count;
// > NSDictionary user
@property (nonatomic, strong) NSDictionary *user;
// > NSDictionary retweeted_status
@property (nonatomic, strong) NSDictionary *retweeted_status;
@end