Conditional Array ...优雅的方式来做到这一点
问题描述:
我有这个数组,其中必须添加或不添加几个元素取决于某些条件。通常我会这样做:Conditional Array ...优雅的方式来做到这一点
NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObject:@"aaa"];
[myArray addObject:@"bbb"];
if (flag)
[myArray addObject:@"flag"];
if (box)
[myArray addObject:@"box"];
[myArray addObject:@"xxx"];
if (x > 5)
[myArray addObject:@"smaller"];
if ([self isMenuVisible])
[myArray addObject:@"menu"];
... etc.
但这看起来很混乱和复杂。
我可以想象我可以创建几种方法来做到这一点,但这需要传递字典,对象和条件数组等等,但都显得比这更蹩脚和更复杂。
你们会如何以更优雅的方式做到这一点?
答
我只是留下这一个。它已经非常清楚,易于理解。
但,你可以,如果你真的很讨厌看到if
定义一个类中的方法。
// Not tested.
@implementation NSMutableArray (ext)
-(void)addObject:(NSObject*)obj when:(BOOL)condition {
if (condition) {
[self addObject:obj];
}
}
@end
....
[myArray addObject:@"aaa"];
[myArray addObject:@"bbb"];
[myArray addObject:@"flag" when:flag];
[myArray addObject:@"box" when:box];
[myArray addObject:@"xxx"];
[myArray addObject:@"smaller" when:(x > 5)];
[myArray addObject:@"menu" when:[self isMenuVisible]];
虽然这可能是未来的维护负担。
这看起来并不令人困惑或复杂。我会这样做。 – trojanfoe 2013-05-09 20:06:55
备注 - 请记住,您应用于问题的标签应该与问题的内容相关。这个问题与iOS,iPhone或iPad无关。这是一个Objective-C问题。 – rmaddy 2013-05-09 20:07:01