偷懶啦!字典自動生成屬性列表
在網路請求或載入plist檔案時,常會獲得一個字典。我們通常會將字典轉為模型。就避免不了在類的.h檔案宣告屬性,這是一個重複的工作,我們如何偷懶呢?
假設我們擁有一個plist檔案,我們需要對其模型化。首先我們載入這個檔案
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 獲取檔案全路徑
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"status.plist" ofType:nil];
// 檔案全路徑
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:filePath];
// 設計模型,建立屬性程式碼 => dict
[dict createPropertyCode];
}
其次我們宣告一個NSDictionary
的分類,實現方法createPropertyCode
@interface NSDictionary (Property)
- (void)createPropertyCode;
@end
@implementation NSDictionary (Property)
// isKindOfClass:判斷是否是當前類或者子類
// 生成屬性程式碼 => 根據字典中所有key
- (void)createPropertyCode
{
NSMutableString *codes = [NSMutableString string];
// 遍歷字典
[self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull value, BOOL * _Nonnull stop) {
NSString *code;
if ([value isKindOfClass:[NSString class]]) {
code = [NSString stringWithFormat:@"@property (nonatomic, strong) NSString *%@;",key];
} else if ([value isKindOfClass:NSClassFromString(@"__NSCFBoolean")]) {
code = [NSString stringWithFormat:@"@property (nonatomic, assign) BOOL %@;",key];
} else if ([value isKindOfClass:[NSNumber class]]) {
code = [NSString stringWithFormat:@"@property (nonatomic, assign) NSInteger %@;",key];
} else if ([value isKindOfClass:[NSArray class]]) {
code = [NSString stringWithFormat:@"@property (nonatomic, strong) NSArray *%@;",key];
} else if ([value isKindOfClass:[NSDictionary class]]) {
code = [NSString stringWithFormat:@"@property (nonatomic, strong) NSDictionary *%@;",key];
}
// @property (nonatomic, strong) NSString *source;
[codes appendFormat:@"\n%@\n",code];
}];
NSLog(@"%@",codes);
}
@end
當viewDidLoad
執行到[dict createPropertyCode];
時,就會列印出所有的屬性列表:
2016-09-12 11:23:18.646 05-Runtime(****字典轉模型****KVC****實現****)[11614:103900] **
@property (nonatomic, strong) NSString *source;
@property (nonatomic, assign) NSInteger reposts_count;
@property (nonatomic, strong) NSArray *pic_urls;
@property (nonatomic, strong) NSString *created_at;
@property (nonatomic, assign) BOOL isA;
@property (nonatomic, assign) NSInteger attitudes_count;
@property (nonatomic, strong) NSString *idstr;
@property (nonatomic, strong) NSString *text;
@property (nonatomic, assign) NSInteger comments_count;
@property (nonatomic, strong) NSDictionary *user;
這是在看小馬哥視訊時,學習到的方法,記錄下來。
相關文章
- lavavel 自動生成資料字典
- 偷個懶,公號摳腚早報80%自動化——1.批量生成微信封面圖
- 偷懶之 validator 驗證器免寫 messages 自動中文輸出
- 如何利用showdoc自動生成資料字典
- 深入理解 Autolayout 與列表效能 -- 背鍋的 Cassowary 和偷懶的 CPU
- python -三元表示式、列表生成式、字典生成式Python
- 字串形式的列表,字典轉列表,字典字串
- 偷個懶,公號摳腚早報80%自動化——3.Flask速成大法Flask
- 偷懶祕訣之變數篇變數
- 記一次偷懶實踐
- Python3自動生成MySQL資料字典的markdown文字PythonMySql
- 動態生成HTML元素併為元素追加屬性HTML
- Python __dict__屬性:檢視物件內部所有屬性名和屬性值組成的字典Python物件
- PropertyChanged.Fody自動通知屬性外掛
- 偷個懶,公號摳腚早報80%自動化——5.意思意思擼個APP收下尾APP
- 如何正確的(?)利用 Vue.mixin() 偷懶Vue
- 程式設計師應當學會“偷懶”程式設計師
- 偷懶竟還被誇?怎麼做到的?
- 「懶惰的美德」我用 python 寫了個自動生成給文件生成索引的指令碼Python索引指令碼
- Day 13 迭代器 三元表示式 列表生成式 字典生成式 生成器 遞迴遞迴
- css基礎02-操作文字屬性、背景屬性、補充知識(去掉列表的前標、列表CSS
- SQL Server 生成C#公共實體屬性和私有屬性SQLServerC#
- Python資料型別(數字,字串,[列表],(元組),{字典:字典值},{列表,列表2})Python資料型別字串
- 遞迴、三元表示式、生成式(列表,字典)、匿名函式遞迴函式
- 拯救懶癌文件君 - VuePress + Travis CI + Github Pages 自動線上生成文件VueGithub
- 偷個懶,公號摳腚早報80%自動化——4.用Flask搭個簡易(陋)後臺Flask
- 偷個懶,公號摳腚早報80%自動化——2.手撕爬蟲定時爬新聞爬蟲
- 屬性動畫動畫
- 列表和字典的操作
- python 實現類屬性的懶載入裝飾器Python
- 從零開始寫一個npm包,一鍵生成react元件(偷懶==提高效率)NPMReact元件
- C#給自動屬性設定預設值C#
- Wordpress自動給圖片新增alt和title屬性
- Android自動化-如何獲取檢視元素屬性?Android
- 字串、列表、字典內建方法字串
- 列表與字典中的坑
- 字串 列表 字典 互相轉換字串
- Python列表、元組、字典使用Python
- android屬性動畫Android動畫