条件数组...优雅的方法

Spa*_*Dog 1 objective-c nsmutablearray

我有这个数组,其中必须根据某些条件添加或不添加多个元素。通常我会做这样的事情:

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.
Run Code Online (Sandbox Code Playgroud)

但这显得令人困惑和复杂。

我可以想象我可以创建几种方法来做到这一点,但这将涉及传递字典、对象和条件数组等,但所有这些都显得比这更蹩脚和更复杂。

你们如何以更优雅的方式做到这一点?

ken*_*ytm 5

我就不理会这个了。已经非常清晰易懂了。


如果您真的不喜欢看到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]];
Run Code Online (Sandbox Code Playgroud)

但这可能会成为将来的维护负担。