0

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

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.

但这似乎令人困惑和复杂。

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

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

4

1 回答 1

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]];

不过,这可能是未来的维护负担。

于 2013-05-09T20:07:32.307 回答