當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
iOS端JSON转Model链式编程框架SuperKVC使用方法与原理
生活随笔
收集整理的這篇文章主要介紹了
iOS端JSON转Model链式编程框架SuperKVC使用方法与原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
背景
在client編程中。字典轉模型是一個極為常見的問題,蘋果提供了KVC來實現NSDictionary到Model的注入,可是KVC僅僅能進行單層淺注入。且無法處理類型轉換、key與屬性名不正確應、深度注入等問題,筆者從Masonry得到啟示,開發了一個通過鏈式配置注入器實現深度注入、類型轉換、key-屬性名映射等功能的輕量級注入框架SuperKVC。眼下已經開源到GitHub,點擊這里前往。歡迎Star和Fork。歡迎和我一起完好這個框架!
本文將從應用和原理兩個角度介紹SuperKVC
使用方法
該框架與Masonry相似,要求用戶在相關方法參數的block中通過鏈式編程的方法配置注入器參數,比如配置要創建和注入的class、類型轉換器、名稱映射等,然后方法會返回注入后的結果。假設JSON的根元素為字典,則返回一個模型實例。假設JSON的根元素為數組,則返回一個模型數組。
淺注入演示樣例
假設我們有例如以下的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注意到這里的幾個“坑點”,響應的id相應的是模型的userId。響應的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");// 配置類型轉換injector.format(@"birthday").with.converter(^NSDate* (NSString *birthdayString) { posted @ 2017-08-11 21:17 lytwajue 閱讀(...) 評論(...) 編輯 收藏總結
以上是生活随笔為你收集整理的iOS端JSON转Model链式编程框架SuperKVC使用方法与原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用c:forEach 控制5个换行
- 下一篇: Log保存文件-Android