2013-04-02 131 views
-1

我是新的。請幫助,如何使之短:NSArray中有很多對象

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

thnaks。我想是這樣@ 「後面%i.jpg」,詮釋++

回答

1

你熟悉的循環?

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

也許你想是這樣的:

NSMutableArray * effects = [[NSMutableArray alloc] init]; 
if(effects) 
{ 
    for(NSInteger index = 0; index < 10; index++) 
    { 
     [effects addObject: [NSString stringWithFormat: @"Back%i.jpg", index]; 
    } 
} 
+1

唉,*非埃及*大括號?我知道這是愚人節,但認真,男人? ;) – CodaFi

+0

我只是婉創造一個srollView這些圖像 –

+5

這聽起來像比你上面問,小麗一個不同的問題。 –

0

根據你需要的數組的大小,你可以利用NSArray的非常簡單的子類。您只需要重寫兩種方法,即countobjectAtIndex:

@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); 

該解決方案使用的代碼一些額外的線路相比,通過構建陣列循環,但上檔,就應該少用大數組的內存。

像這樣的陣列可以是在某些情況下,作爲陣列控制器模型對象是有用的。

我不知道它將如何撐起一個代碼審查,有些人可能會發現,硬編碼的大小和格式字符串可能需要一些工作。