javascript
iOS端JSON转Model链式编程框架SuperKVC使用方法与原理
背景
在client編程中。字典轉(zhuǎn)模型是一個極為常見的問題,蘋果提供了KVC來實現(xiàn)NSDictionary到Model的注入,可是KVC僅僅能進行單層淺注入。且無法處理類型轉(zhuǎn)換、key與屬性名不正確應(yīng)、深度注入等問題,筆者從Masonry得到啟示,開發(fā)了一個通過鏈式配置注入器實現(xiàn)深度注入、類型轉(zhuǎn)換、key-屬性名映射等功能的輕量級注入框架SuperKVC。眼下已經(jīng)開源到GitHub,點擊這里前往。歡迎Star和Fork。歡迎和我一起完好這個框架!
本文將從應(yīng)用和原理兩個角度介紹SuperKVC
使用方法
該框架與Masonry相似,要求用戶在相關(guān)方法參數(shù)的block中通過鏈式編程的方法配置注入器參數(shù),比如配置要創(chuàng)建和注入的class、類型轉(zhuǎn)換器、名稱映射等,然后方法會返回注入后的結(jié)果。假設(shè)JSON的根元素為字典,則返回一個模型實例。假設(shè)JSON的根元素為數(shù)組,則返回一個模型數(shù)組。
淺注入演示樣例
假設(shè)我們有例如以下的JSON。要注入到UserModel中。
{"id": 100075,"name": "Greedy","birthday": "1993-03-06","isVip": true,"partners": [100236, 100244, 100083] } @interface UserModel : NSObject@property (nonatomic, assign) int64_t userId; @property (nonatomic, copy) NSString *name; @property (nonatomic, strong) NSDate *birthday; @property (nonatomic, assign) BOOL isVip; @property (nonatomic, strong) NSArray *partners;@end注意到這里的幾個“坑點”,響應(yīng)的id相應(yīng)的是模型的userId。響應(yīng)的birthday類型為NSString,而模型的birthday類型為NSDate。使用SuperKVC進行注入的代碼例如以下。
// responseObject is a JSONObject(NSDictionary). UserModel *userModel = [responseObject sk_injectWithInjector:^(SuperKVCInjector *injector) {// 配置要生成和注入的模型實例類型injector.bind([UserModel class]);// 配置key到屬性名的映射injector.mapping(@"id").to(@"userId");// 配置類型轉(zhuǎn)換injector.format(@"birthday").with.converter(^NSDate* (NSString *birthdayString) { posted @ 2017-08-11 21:17 lytwajue 閱讀(...) 評論(...) 編輯 收藏總結(jié)
以上是生活随笔為你收集整理的iOS端JSON转Model链式编程框架SuperKVC使用方法与原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用c:forEach 控制5个换行
- 下一篇: Spring Cloud自定义Hystr