I'm working with lots of code that looks like this:
-(void)switchToPercent{
int tmp;
tmp = (statisticsObject.idag3_orig != 0) ? statisticsObject.idag3_orig : [self compareValue:statisticsObject.idag2 withValue:statisticsObject.idag3];
statisticsView.idag3.text = [NSString stringWithFormat:@"%i", tmp];
tmp = (statisticsObject.igar3_orig != 0) ? statisticsObject.igar3_orig : [self compareValue:statisticsObject.igar2 withValue:statisticsObject.igar3];
statisticsView.igar3.text = [NSString stringWithFormat:@"%i", tmp];
tmp = (statisticsObject.veckan3_orig != 0) ? statisticsObject.veckan3_orig : [self compareValue:statisticsObject.veckan2 withValue:statisticsObject.veckan3];
statisticsView.veckan3.text = [NSString stringWithFormat:@"%i", tmp];
tmp = (statisticsObject.manaden3_orig != 0) ? statisticsObject.manaden3_orig : [self compareValue:statisticsObject.manaden2 withValue:statisticsObject.manaden3];
statisticsView.manaden3.text = [NSString stringWithFormat:@"%i", tmp];
tmp = (statisticsObject.kvartalet3_orig != 0) ? statisticsObject.kvartalet3_orig : [self compareValue:statisticsObject.kvartalet2 withValue:statisticsObject.kvartalet3];
statisticsView.kvartalet3.text = [NSString stringWithFormat:@"%i", tmp];
tmp = (statisticsObject.aret3_orig != 0) ? statisticsObject.aret3_orig : [self compareValue:statisticsObject.aret2 withValue:statisticsObject.aret3];
statisticsView.aret3.text = [NSString stringWithFormat:@"%i", tmp];
tmp = (statisticsObject.r123_orig != 0) ? statisticsObject.r123_orig : [self compareValue:statisticsObject.r122 withValue:statisticsObject.r123];
statisticsView.r123.text = [NSString stringWithFormat:@"%i", tmp];
[self formatText:statisticsView.idag3];
[self formatText:statisticsView.igar3];
[self formatText:statisticsView.veckan3];
[self formatText:statisticsView.manaden3];
[self formatText:statisticsView.kvartalet3];
[self formatText:statisticsView.aret3];
[self formatText:statisticsView.r123];
}
I'm trying to remove the repetition as much as I can. Originally, the business logic was repeated once for each of the properties shown, but I've moved that into a method named compareValue:withValue:. I've also introduced the conditional operator to remove larger ifelse blocks. I imagine the next step is to reduce the seven chunks of code into one, and iterate over a list of keywords, but how?