-1

我是新来的。请帮助,如何缩短:

effects = [[NSArray alloc] initWithObjects:@"Back1.jpg", @"Back2.jpg", @"Back3.jpg", @"Back4.jpg", @"Back5.jpg", @"Back6.jpg", @"Back7.jpg", @"Back8.jpg",@"Back9.jpg",nil];

谢谢。我想要类似@"back%i.jpg", int++

4

3 回答 3

8

也许你想要类似的东西:

NSMutableArray * effects = [[NSMutableArray alloc] init];
if(effects)
{
   for( NSInteger index = 0; index < 10; index++)
   {
      [effects addObject: [NSString stringWithFormat: @"Back%i.jpg", index];
   }
}
于 2013-04-02T04:11:39.900 回答
1

你熟悉 for 循环吗?

int whatever = 100;
NSMutableArray * effectsTmp = [NSMutableArray new];
for (int i = 0; i < whatever; i++) {
     [effects addObject:[NSString stringWithFormat:@"Back%i.jpg", i]];
}
NSArray * effects = effectsTmp;
于 2013-04-02T04:11:55.243 回答
0

根据您需要的数组大小,您可以利用 NSArray 非常简单的子类化。您只需要覆盖两个方法,count并且objectAtIndex:.

@interface StringArray : NSArray
@end

@implementation StringArray

-(NSUInteger)count {
    return 9;
}

-(id)objectAtIndex:(NSUInteger)index {
    return [NSString stringWithFormat:@"Back%ld.jpg", (long)(index +1)];
}

@end

要使用它,只需实例化它:

NSArray *stringArray = [[StringArray alloc] init];
NSLog(@"Array: %@", stringArray);

与通过 for 循环构建数组相比,此解决方案使用了几行额外的代码,但从好的方面来说,它应该为大型数组使用更少的内存。

像这样的数组在某些情况下可以用作数组控制器的模型对象。

我不知道它如何经得起代码审查,有些人可能会发现硬编码的大小和格式字符串可能需要一些工作。

于 2013-04-02T08:45:50.193 回答