如何減少if else的使用朝扼?
- 在公司項(xiàng)目中常乘汛眩看見(jiàn)很多if else讓人很煩多的時(shí)候泡嘴,會(huì)讓你頭疼甫恩。
- 接下來(lái)說(shuō)說(shuō)我是如何解決這個(gè)問(wèn)題的,說(shuō)的不好的地方歡迎提意見(jiàn)
如何解決那么我們就要注意理解和對(duì)MVC的使用了
M 數(shù)據(jù)模型
V 界面
C 控制器
太多的if else就是對(duì)數(shù)據(jù)模型這里不太熟悉了酌予,我們可以先來(lái)學(xué)習(xí)一下模型( www.baidu.com )
自己找吧磺箕,哈哈奖慌,說(shuō)重點(diǎn)舉例一個(gè)小程序就說(shuō)pikerView吧
(因?yàn)橐呀?jīng)寫好了)pikerView和tableView一樣具有行和列這樣的屬性,我們要善用它松靡,而不是
if else干嘛干嘛的简僧,這樣也太麻煩了,簡(jiǎn)直是一種煎熬击困,一堆堆的if else想死的心都有了涎劈,如
何有效的避免它呢广凸?-
第一種方式(不是用模型而是直接用數(shù)組阅茶,適用于比較怕麻煩的人)
貼代碼,手抖:
- (NSMutableArray *)titleNames
{
if (_titleNames == nil) {
_titleNames = [NSMutableArray array];[self setUpTitleNames0]; [self setUpTitleNames1]; [self setUpTitleNames2]; } return _titleNames; } - (void)setUpTitleNames0 { [self.titleNames addObject:self.firstArray]; } - (void)setUpTitleNames1 { [self.titleNames addObject:self.secondArray]; } - (void)setUpTitleNames2 { [self.titleNames addObject:self.thridArray]; } n 列 - (NSInteger)numberOfComponentsIn PickerView:(UIPickerView *)pickerView { return self.integer; } //row 行 - (NSInteger)pickerView:(UIPickerView *)picker View numberOfRowsInComponent:(NSInteger)component { return [self.titleNames[component] count]; }
是不是很簡(jiǎn)單谅海,這樣就完全不需要判斷了
我們通過(guò)一個(gè)可變數(shù)組用來(lái)存放東西脸哀,其他3個(gè)數(shù)組存放的需要選擇的那一行的數(shù)據(jù),一個(gè)可變的
數(shù)組中有了3個(gè)數(shù)組,我們可以把它暫時(shí)看成有了3列數(shù)據(jù)扭吁,這樣我們只需要取出當(dāng)前對(duì)應(yīng)的哪一
列的數(shù)據(jù)自然就知道了當(dāng)前多少行撞蜂,以此類推下面pikerView的title這些只需要復(fù)制就行了然后
取出row,就大功告成.第二種方法用模型 (這個(gè)方法適合于不怕麻煩侥袜,希望看起來(lái)代碼簡(jiǎn)潔好看的那種蝌诡,也有利于以后的修改 ,如果只是自己寫枫吧,不妨用簡(jiǎn)易點(diǎn)的浦旱,沒(méi)辦法誰(shuí)叫老板老催的急呢 ? 對(duì)吧 ! )
這個(gè)我就用tableView來(lái)舉例了哦,因?yàn)樗容^好說(shuō)
-
貼代碼:
@property (nonatomic, strong) UIImage *image;@property (nonatomic, strong) NSString *title; + (instancetype)itemWithImage:(UIImage *)image title:(NSString *)title;//這個(gè)實(shí)現(xiàn)總會(huì)吧
-
第二份代碼
@property (nonatomic, strong) NSArray *items;+ (instancetype)groupWithItems:(NSArray *)items;
-
控制器代碼
- (void)setUpGroup0
{
FDSettingItem *redeemCode = [FDSettingItem itemWithImage:[UIImage imageNamed:@"xxxxx"] title:@"我的劍就是你的賤"];// 當(dāng)前組有多少行 FDSettingGroup *group = [FDSettingGroup groupWithItems:@[redeemCode]]; [self.groups addObject:group]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return self.groups.count; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { FDSettingGroup *group = self.groups[section]; return group.items.count; }
-
搞定了九杂,就這樣
-
可能寫的不怎么好颁湖,不懂可以在這里問(wèn)我 或者 私信
@"啦啦啦德瑪西亞"
-