iOS 一行代碼生成模型所有屬性和描述

前言

1.大家平時(shí)在數(shù)據(jù)請(qǐng)求時(shí)候一般用的MVC模式,然后創(chuàng)建模型蚜退,要寫繁瑣的屬性。
2.當(dāng)打印模型的時(shí)候彪笼,模型也只能打印出一個(gè)地址钻注,不能看到模型里面屬性具體值,又要去重寫它的描述配猫。

  • 以上內(nèi)容麻煩幅恋,然后突然一天看到個(gè)大神的簡(jiǎn)書(shū),模仿他自己重新寫了個(gè)NSObject的分類章姓,一行代碼生成所有屬性和描述佳遣。你只是粘貼復(fù)制你Log內(nèi)容了。
  • 重寫描述里面有些類型要改一下凡伊,但是json數(shù)據(jù)為空的要自己判斷零渐,如果哪位大神有其他方法還請(qǐng)告知。

效果圖

  • 生成的屬性和重寫描述
屬性和模型描述.png

步驟

  1. 大家網(wǎng)絡(luò)請(qǐng)求到的json數(shù)據(jù)一般如下:


    json數(shù)據(jù).png
  2. 然后添加一個(gè)NSObject的分類系忙,里面符號(hào)一大堆腦口痛诵盼,你只需粘貼復(fù)制,代碼內(nèi)容如下:

+(void)propertyCodeWithDictionary:(NSDictionary *)dict
{
    NSMutableString *strM              = [NSMutableString string];
    NSMutableString *descriptionHeader = [NSMutableString stringWithFormat:@"[NSString stringWithFormat:%@\"",@"@"];
    NSMutableString *descriptionEnd    = [NSMutableString string];
    NSInteger count                    = [dict count];
    __block NSInteger index            = 0;
    [dict enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key,
                                              id  _Nonnull obj,
                                              BOOL * _Nonnull stop) {
    //        NSLog(@"類型%@\n",[obj class]);
        NSString *str;
        NSString *Header;
        index ++;
        if ([obj isKindOfClass:NSClassFromString(@"__NSCFString")] || [obj isKindOfClass:NSClassFromString(@"NSTaggedPointerString")] || [obj isKindOfClass:NSClassFromString(@"__NSCFConstantString")]) {
            str = [NSString stringWithFormat:@"@property (nonatomic, copy) NSString *%@;",key];
            Header = [NSString stringWithFormat:@"%@:%@,\\n",key,@"%@"];
        }
        if ([obj isKindOfClass:NSClassFromString(@"__NSCFNumber")]) {
            str = [NSString stringWithFormat:@"@property (nonatomic, assign) int %@;",key];
            Header = [NSString stringWithFormat:@"%@:%@,\\n",key,@"%@"];
        }
        if ([obj isKindOfClass:NSClassFromString(@"__NSCFArray")]) {
            str = [NSString stringWithFormat:@"@property (nonatomic, copy) NSArray *%@;",key];
            Header = [NSString stringWithFormat:@"%@:%@,\\n",key,@"%@"];
        }
        if ([obj isKindOfClass:NSClassFromString(@"__NSCFDictionary")]) {
            str = [NSString stringWithFormat:@"@property (nonatomic, copy) NSDictionary *%@;",key];
            Header = [NSString stringWithFormat:@"%@:%@,\\n",key,@"%@"];
        }
        if ([obj isKindOfClass:NSClassFromString(@"__NSCFBoolean")]) {
            str = [NSString stringWithFormat:@"@property (nonatomic, assign) BOOL %@;",key];
            Header = [NSString stringWithFormat:@"%@:%@,\\n",key,@"%d"];
        }
        if ([obj isKindOfClass:(NSClassFromString(@"NSNull"))]) {
            str = [NSString stringWithFormat:@"@property (nonatomic, copy) NSString *%@  (null);",key];
            Header = [NSString stringWithFormat:@"%@:%@,\\n",key,@"%@"];
        }
        [descriptionEnd appendFormat:@"_%@,",key];
        [descriptionHeader appendFormat:@"%@",Header];
        [strM appendFormat:@"\n%@",str];
    }];
    if (count == index && count > 0) {
        [descriptionHeader replaceCharactersInRange:NSMakeRange(descriptionHeader.length - 3, 3) withString:@"\","];
        [descriptionEnd replaceCharactersInRange:NSMakeRange(descriptionEnd.length - 1, 1) withString:@"];"];
    }
    NSLog(@"\n\n*******模型所有屬性银还,自己要改下(默認(rèn)空的數(shù)據(jù)為字符串)*******%@",strM);
    NSLog(@"\n\n***************重寫模型的描述粘貼復(fù)制這句***************\nreture %@%@",descriptionHeader,descriptionEnd);
    
}

3.最后在請(qǐng)求成功得到數(shù)據(jù)的Block里面一句話
[NSObject propertyCodeWithDictionary:<#請(qǐng)求得到的模型字典#>];

4.通過(guò)打印設(shè)置你模型的屬性风宁,還有重新描述。

5.打印模型就再也不擔(dān)心只是個(gè)地址了蛹疯。

打印的模型.png

參考


有什么錯(cuò)誤還請(qǐng)指出戒财,多多交流。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捺弦,一起剝皮案震驚了整個(gè)濱河市饮寞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌列吼,老刑警劉巖幽崩,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異寞钥,居然都是意外死亡慌申,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門理郑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蹄溉,“玉大人咨油,你說(shuō)我怎么就攤上這事±噻停” “怎么了臼勉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵邻吭,是天一觀的道長(zhǎng)餐弱。 經(jīng)常有香客問(wèn)我,道長(zhǎng)囱晴,這世上最難降的妖魔是什么膏蚓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮畸写,結(jié)果婚禮上驮瞧,老公的妹妹穿的比我還像新娘。我一直安慰自己枯芬,他們只是感情好论笔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著千所,像睡著了一般狂魔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上淫痰,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天最楷,我揣著相機(jī)與錄音,去河邊找鬼待错。 笑死籽孙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的火俄。 我是一名探鬼主播犯建,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瓜客!你這毒婦竟也來(lái)了适瓦?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤忆家,失蹤者是張志新(化名)和其女友劉穎犹菇,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體芽卿,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揭芍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卸例。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片称杨。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡肌毅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出姑原,到底是詐尸還是另有隱情悬而,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布锭汛,位于F島的核電站笨奠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏唤殴。R本人自食惡果不足惜般婆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望朵逝。 院中可真熱鬧蔚袍,春花似錦、人聲如沸配名。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)渠脉。三九已至宇整,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間连舍,已是汗流浹背没陡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留索赏,地道東北人盼玄。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像潜腻,于是被迫代替她去往敵國(guó)和親埃儿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理融涣,服務(wù)發(fā)現(xiàn)童番,斷路器,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,072評(píng)論 25 707
  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,139評(píng)論 30 470
  • 草木間茶樓王瑋閱讀 123評(píng)論 0 1
  • 回到相遇之前 天空依然蔚藍(lán) 遠(yuǎn)方的海岸也依然存在 你帶來(lái)的一切 和你這個(gè)人一樣 虛幻無(wú)邊不可觸及 再不會(huì)偶遇吧 這...
    kk77閱讀 243評(píng)論 0 1