iOS中map代替條件判斷

以下代碼使用了三種不同的的方法實(shí)現(xiàn)了條件判斷,分別為if胧沫、switch昌简、map的形式。前兩者實(shí)現(xiàn)起來(lái)簡(jiǎn)單绒怨,但是會(huì)遇到兩個(gè)問(wèn)題:1纯赎、在條件實(shí)現(xiàn)里面堆砌大量代碼,增加閱讀上面的難度南蹂。2犬金、判斷時(shí)間過(guò)長(zhǎng),假如有n個(gè)條件六剥,可能就要判斷n次晚顷。

1、假如能夠?qū)l件實(shí)現(xiàn)里面的代碼抽出來(lái)疗疟,可以降低閱讀難度该默。解決問(wèn)題1
2、if策彤、switch無(wú)法解決問(wèn)題2栓袖,但是通過(guò)map的方式能夠解決問(wèn)題2.

- (IBAction)click:(id)sender {

UIButton *button = (UIButton *)sender;

NSInteger tag = button.tag;

//在這里假設(shè)tag值是條件,button是參數(shù)

//根據(jù)參數(shù)店诗,實(shí)現(xiàn)具體的業(yè)務(wù)邏輯裹刮,這里舉例打印button的標(biāo)題,現(xiàn)實(shí)中可能會(huì)做各種不同的業(yè)務(wù)邏輯:拿到button的圖片、更新button的點(diǎn)擊狀態(tài)等

if (tag==1) {

NSLog(@"if條件判斷%@", button.currentTitle);

}

if (tag==2) {

NSLog(@"if條件判斷%@", button.currentTitle);

}

if (tag==3) {

NSLog(@"if條件判斷%@", button.currentTitle);

}

if (tag==4) {

NSLog(@"if條件判斷%@", button.currentTitle);

}

if (tag==5) {

NSLog(@"if條件判斷%@", button.currentTitle);

}

NSLog(@"啟用缺省邏輯");

switch (tag) {

case 1:

NSLog(@"switch條件判斷%@", button.currentTitle);

break;

case 2:

NSLog(@"switch條件判斷%@", button.currentTitle);

break;

case 3:

NSLog(@"switch條件判斷%@", button.currentTitle);

break;

case 4:

NSLog(@"switch條件判斷%@", button.currentTitle);

break;

case 5:

NSLog(@"switch條件判斷%@", button.currentTitle);

break;

default:

NSLog(@"啟用缺省邏輯");

break;

}

NSDictionary *dict = @{

@"1":@"clickButton1:",

@"2":@"clickButton2:",

@"3":@"clickButton3:",

@"4":@"clickButton4:",

@"5":@"clickButton5:"

};

//key對(duì)應(yīng)的判斷條件庞瘸,value對(duì)應(yīng)執(zhí)行方法的名字

NSString *methodStr = dict[@(tag).stringValue];

SEL method = nil;

if (methodStr == NULL) {

method = NSSelectorFromString(@"methodHolderplace");

} else {

method = NSSelectorFromString(methodStr);

}

//拿到參數(shù)

[self performSelector:method withObject:button];

}

- (void)methodHolderplace {

NSLog(@"啟用缺省邏輯");

}

- (void)clickButton1:(UIButton *)sender {

NSLog(@"map條件判斷%@", sender.currentTitle);

}

- (void)clickButton2:(UIButton *)sender {

NSLog(@"map條件判斷%@", sender.currentTitle);

}

- (void)clickButton3:(UIButton *)sender {

NSLog(@"map條件判斷%@", sender.currentTitle);

}

- (void)clickButton4:(UIButton *)sender {

NSLog(@"map條件判斷%@", sender.currentTitle);

}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捧弃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恕洲,更是在濱河造成了極大的恐慌塔橡,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霜第,死亡現(xiàn)場(chǎng)離奇詭異葛家,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)泌类,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)癞谒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人刃榨,你說(shuō)我怎么就攤上這事弹砚。” “怎么了枢希?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵桌吃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我苞轿,道長(zhǎng)茅诱,這世上最難降的妖魔是什么逗物? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮瑟俭,結(jié)果婚禮上翎卓,老公的妹妹穿的比我還像新娘。我一直安慰自己摆寄,他們只是感情好失暴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著微饥,像睡著了一般逗扒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畜号,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天缴阎,我揣著相機(jī)與錄音,去河邊找鬼简软。 笑死蛮拔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痹升。 我是一名探鬼主播建炫,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼疼蛾!你這毒婦竟也來(lái)了肛跌?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤察郁,失蹤者是張志新(化名)和其女友劉穎衍慎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體皮钠,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稳捆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了麦轰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乔夯。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖款侵,靈堂內(nèi)的尸體忽然破棺而出末荐,到底是詐尸還是另有隱情,我是刑警寧澤新锈,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布甲脏,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏剃幌。R本人自食惡果不足惜聋涨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一晾浴、第九天 我趴在偏房一處隱蔽的房頂上張望负乡。 院中可真熱鬧,春花似錦脊凰、人聲如沸抖棘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)切省。三九已至,卻和暖如春帕胆,著一層夾襖步出監(jiān)牢的瞬間朝捆,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工懒豹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芙盘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓脸秽,卻偏偏與公主長(zhǎng)得像儒老,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子记餐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法驮樊,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法片酝,繼承相關(guān)的語(yǔ)法囚衔,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,598評(píng)論 18 399
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)雕沿。 張土汪:刷leetcod...
    土汪閱讀 12,737評(píng)論 0 33
  • 學(xué)習(xí)前端編程已經(jīng)有段時(shí)間了练湿,感覺(jué)做網(wǎng)頁(yè)和做別的東西都是一樣的道理,特別和蓋房子等工程相關(guān)的活動(dòng)有更多的共同點(diǎn)...
    清葉閱讀 1,598評(píng)論 0 2
  • 你作為一個(gè)開(kāi)發(fā)者,會(huì)有另一半断国,買(mǎi)房還貸贤姆,建立家庭,你會(huì)有孩子稳衬,一日五六餐嗷嗷吃錢(qián)霞捡,你還需要贍養(yǎng)老人,你需要越來(lái)越多...
    安曉輝0閱讀 25,171評(píng)論 120 887
  • 學(xué)習(xí)更多有關(guān)執(zhí)業(yè)藥師薄疚、中藥師碧信,請(qǐng)關(guān)注“精而簡(jiǎn)醫(yī)考網(wǎng)” 或(jejykw)赊琳,接收重要考試通知,不要錯(cuò)過(guò)砰碴!
    c49345312d5f閱讀 257評(píng)論 0 1