我是新人。求助,如何缩短:
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 i ++
这样的东西答案 0 :(得分:8)
也许你想要这样的东西:
NSMutableArray * effects = [[NSMutableArray alloc] init];
if(effects)
{
for( NSInteger index = 0; index < 10; index++)
{
[effects addObject: [NSString stringWithFormat: @"Back%i.jpg", index];
}
}
答案 1 :(得分: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;
答案 2 :(得分: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循环构建数组相比,此解决方案使用了一些额外的代码行,但从好的方面来说,它应该为大型数组使用更少的内存。
像这样的数组在某些情况下可用作数组控制器的模型对象。
我不知道它如何能够阻止代码审查,有些人可能会发现硬编码的大小和格式字符串可能需要一些工作。