亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

iOS開發--BaseModel

2019-11-14 18:21:15
字體:
來源:轉載
供稿:網友

  軟件開發過程中,需要解析各種各樣的數據.如最基礎的plist文件,從網絡下載獲取的json數據,以及xml網頁數據,還有比較重要的Core Data數據.

  下面我來分享一種快速將json文件中的字典轉為模型的方法.雖然很多人在用第三方類庫解析json數據,不過將json文件中的字典轉為模型內部的實現原理還是需要了解一下的.

  下面是BaseModel.h聲明文件,向外界開方了兩個方法:

  第7行的方法是實現json文件中的字典轉模型;

  第10行方法是防止出現特殊類型的數據無法轉為模型而導致程序異常.

 1 BaseModel.h 2  3 #import <Foundation/Foundation.h> 4  5 @interface BaseModel : NSObject 6  7 - (instancetype)initWithDictionary:(NSDictionary *)jsonDictionary; 8  9 // 將json中的value值交給model的屬性(覆寫該方法可以將json文件中特殊的數據加到model中)特殊類型如:NSNull類型數據10 - (void)setAttributesWithDictionary:(NSDictionary *)jsonDict;11 12 @end

  

  下面是BaseModel.m實現文件

 

 1 BaseModel.m 2  3 #import "BaseModel.h" 4  5 @implementation BaseModel 6  7 - (instancetype)initWithDictionary:(NSDictionary *)jsonDictionary 8 { 9     self = [super init];10     11     if (self) {12         // 將jsonDictionary字典的value值交給model的屬性值13         [self setAttributesWithDictionary:jsonDictionary];14     }15     return self;16 }17 18 // 將jsonDictionary字典的value值交給model的屬性值19 - (void)setAttributesWithDictionary:(NSDictionary *)jsonDictionary20 {21     // 獲取映射關系22     NSDictionary *modelDictionary = [self attributesModel:jsonDictionary];23     24     for (NSString *jsonKey in modelDictionary) {25         // 取得屬性名26         NSString *modelAttributesNmae = [modelDictionary objectForKey:jsonKey];27         28         // 取得Value值29         id jsonValue = [jsonDictionary objectForKey:jsonKey];30         31         // 獲取屬性的setter方法32         SEL setterSEL = [self stringToSEL:modelAttributesNmae];33         34         // 如果Value值為NULL,則賦值為""(什么也沒有)35         if ([jsonValue isKindOfClass:[NSNull class]]) {36             jsonValue = @"";37         }38         39         // Warning:PerformSelector may cause a leak because its selector is unknown(PerformSelector可能導致內存泄漏,因為它選擇器是未知的)40         if ([self respondsToSelector:setterSEL]) {41             [self performSelector:setterSEL withObject:jsonValue];42         }43         44     }45 }46 47 // 將字典中的key和model的屬性名映射48 - (NSDictionary *)attributesModel:(NSDictionary *)jsonDictionary49 {50     NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];51     52     // 屬性名和jsonDictionary的key一樣53     for (NSString *jsonKey in jsonDictionary) {54         [dict setValue:jsonKey forKey:jsonKey];55     }56     return dict;57 }58 59 // 獲取屬性的setter方法60 - (SEL)stringToSEL:(NSString *)modelAttributes61 {62     // 截取屬性名的首字母63     NSString *firstString = [modelAttributes substringToIndex:1];64     65     // 首字母大寫66     firstString = [firstString uppercaseString];67     68     // 截取除首字母以外的其它屬性名內容69     NSString *endString = [modelAttributes substringFromIndex:1];70     71     // 拼接setter方法名72     NSString *selString = [NSString stringWithFormat:@"set%@%@:",firstString, endString];73     74     // 將字符串轉化為方法75     SEL selector = NSSelectorFromString(selString);76     77     return selector;78 }79 80 @end

 

  其中BaseModel.m實現文件的第41行會報一個警告,警告的內容上面已經給出了.

  到此為止,一個將json文件中的字典轉為模型的類已經實現了.

  BaseModel的使用大家可以自己測試一下,在這里就不在演示了.

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久99久久精品女同性| 国内成人精品视频| 欧美成人国产va精品日本一级| 国产亚洲精品久久久久久牛牛| 欧美在线视频一区二区| 成人av在线天堂| 色777狠狠综合秋免鲁丝| 欧美日韩中国免费专区在线看| 青青精品视频播放| 国自产精品手机在线观看视频| 国产精品流白浆视频| 日韩欧美中文字幕在线播放| 国产精品久久久久久久久久东京| 欧美中在线观看| 亚洲人成网站在线播| 亚洲美女在线视频| 77777少妇光屁股久久一区| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品看片资源| 欧美区二区三区| 米奇精品一区二区三区在线观看| 不卡av日日日| 亚洲奶大毛多的老太婆| 97成人精品视频在线观看| 一本一本久久a久久精品牛牛影视| 一区二区三区在线播放欧美| 成人激情视频免费在线| 欧美日韩一区二区在线播放| 伊人男人综合视频网| 久久成人精品一区二区三区| 97免费在线视频| 欧美精品制服第一页| 久久综合伊人77777尤物| 国产成人精品电影| 国产精品久久一区主播| 国产一区二区三区中文| 亚洲丁香久久久| 免费不卡在线观看av| 成人乱色短篇合集| 欧洲亚洲妇女av| 日韩午夜在线视频| 国产美女精品免费电影| 亚洲一区二区日本| 欧美国产视频日韩| 国产91在线视频| 不卡伊人av在线播放| 亚洲综合最新在线| 欧美超级免费视 在线| 国产精品永久免费| 日韩国产欧美精品在线| 成人福利网站在线观看| 午夜精品一区二区三区在线视频| 亚洲成人激情小说| 欧美人成在线视频| 亚洲成人黄色在线观看| 国内揄拍国内精品| 最新91在线视频| 97在线精品视频| 精品久久国产精品| 欧美中文字幕在线观看| 久久91亚洲精品中文字幕| 国产欧美va欧美va香蕉在线| 欧美一级黑人aaaaaaa做受| 成人免费大片黄在线播放| 国产午夜精品免费一区二区三区| 亚洲激情免费观看| 国产精品wwwwww| 国产小视频国产精品| 亚洲国产成人精品电影| 伊人一区二区三区久久精品| 91理论片午午论夜理片久久| 日本国产一区二区三区| 国产精品久久久久久中文字| 久久夜精品香蕉| 久久国产精品电影| 日韩精品免费在线观看| 国产视频丨精品|在线观看| 亚洲午夜精品久久久久久性色| 欧美激情一级精品国产| 狠狠做深爱婷婷久久综合一区| 日韩网站免费观看| 国产精品毛片a∨一区二区三区|国| 亚洲午夜激情免费视频| 国产一区二区三区欧美| 日韩成人免费视频| 奇米4444一区二区三区| 欧美麻豆久久久久久中文| 国产z一区二区三区| 亚洲天堂日韩电影| 亚洲人成电影在线观看天堂色| 久热精品视频在线免费观看| 国内精品视频在线| 国产精品嫩草影院一区二区| 久久综合伊人77777尤物| 久久中文久久字幕| 国产亚洲在线播放| 欧美激情在线观看视频| 久久91亚洲精品中文字幕奶水| 中文字幕欧美日韩在线| 国产精品久久久av| 国产精品久久久久久久久久三级| 中文字幕欧美精品日韩中文字幕| 日韩在线观看免费高清完整版| 成人久久18免费网站图片| 国产精品免费一区| 国语自产精品视频在线看| 国外成人在线视频| 91sao在线观看国产| 亚洲欧美国产精品专区久久| 欧美成人在线网站| 亚洲精品之草原avav久久| 中文字幕亚洲国产| 国产精品极品美女在线观看免费| 欧美—级高清免费播放| 久久午夜a级毛片| 欧美刺激性大交免费视频| 日韩电影免费在线观看| 欧美极品少妇xxxxⅹ免费视频| 成人美女免费网站视频| 亚洲欧美成人精品| 亚洲国产高清自拍| 亚洲欧美国产日韩中文字幕| 久久久av电影| 精品欧美激情精品一区| 亚洲视频在线视频| 久久久免费观看视频| 在线观看91久久久久久| 中文字幕久精品免费视频| 亚洲第一免费网站| 久99九色视频在线观看| 中文字幕欧美精品日韩中文字幕| 亚洲免费人成在线视频观看| 成人精品福利视频| 亚洲精品电影网站| 少妇激情综合网| 欧美另类精品xxxx孕妇| 2019中文字幕在线| 尤物九九久久国产精品的特点| 欧美成人精品在线播放| 疯狂做受xxxx欧美肥白少妇| 亚洲精品久久久久中文字幕二区| 亚洲精品久久久久| 国产精品久久久久久久久久新婚| 中国人与牲禽动交精品| 伊人成人开心激情综合网| 成人欧美一区二区三区黑人| 国产免费观看久久黄| 2020欧美日韩在线视频| 国产精品露脸av在线| 国产精自产拍久久久久久蜜| 亚洲第一区第二区| 情事1991在线| 伊人亚洲福利一区二区三区| 久久久久中文字幕| 色噜噜狠狠狠综合曰曰曰| 日韩一区二区av| 一区二区三区天堂av| 欧美在线视频网| 亚洲国产精彩中文乱码av| 日韩成人网免费视频| 日韩精品视频在线观看免费| 国产第一区电影| 久久久亚洲国产| 爽爽爽爽爽爽爽成人免费观看|