我有这个数组,其中必须添加或不添加几个元素,具体取决于某些条件。通常我会做那样的事情:
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.
但这似乎令人困惑和复杂。
我可以想象我可以创建的几种方法来做到这一点,但这会涉及传递字典,对象和条件数组等,但所有方法看起来都比这更蹩脚和更复杂。
你们怎么以更优雅的方式做到这一点?
答案 0 :(得分:4)
我会把这件事留下来。它已经非常清晰易懂了。
但如果你真的讨厌看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]];
这可能是将来的维护负担。