2011-08-20 64 views
0

我有這個方法的問題。我有這個名字的十一個圖像:Articulo 1.png,Articulo 2.png等。我不知道爲什麼,但我的圖像數組只有最後一幅圖像。難道我做錯了什麼?NSMutableArray insertObject:atIndex:problems

這是我的例子:

NSMutableArray imagenesA = [[NSMutableArray alloc]init]; 
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 
UIImage *image = [[UIImage alloc]init]; 
UIImageView *imageView = [[UIImageView alloc]init]; 
NSMutableString *name = [[NSMutableString alloc]init]; 
NSMutableString *name2 = [[NSMutableString alloc]init]; 

for (int y = 0; y < 11; y++) { 

    name = [NSMutableString stringWithFormat:@"Articulo %d.png",y+1]; 
    image = [UIImage imageNamed:name]; 
    imageView = [[UIImageView alloc] initWithImage:image]; 
    name2 = [NSMutableString stringWithFormat:@"Articulo %d",y+1]; 
    [dict setObject:name2 forKey:@"nombre"]; 
    [dict setObject:imageView forKey:@"imagen"]; 

    [imagenesA insertObject:dict atIndex:y]; 

    // show all dictionarys 
    NSLog(@"DICT: %@", dict); 
} 

// show index 0 element --> must be Articulo 1 but... 
NSDictionary *d = [[NSDictionary alloc] 
        initWithDictionary:[imagenesA objectAtIndex:0]]; 
NSLog(@"*********************%@***********************",d); 

控制檯響應:

2011-08-20 14:26:47.411 Catalogo-V1 [28155:207] DICT:{ imagen =「>」; nombre =「Articulo 1」; } 2011-08-20 14:26:47.411 Catalogo-V1 [28155:207] DICT:{ imagen =「>」; nombre =「Articulo 2」; } 2011-08-20 14:26:47.412 Catalogo-V1 [28155:207] DICT:{ imagen =「>」; nombre =「Articulo 3」; } 2011-08-20 14:26:47.412 Catalogo-V1 [28155:207] DICT:{ imagen =「>」; nombre =「Articulo 4」; } 2011-08-20 14:26:47.413 Catalogo-V1 [28155:207] DICT:{ imagen =「>」; nombre =「Articulo 5」; } 2011-08-20 14:26:47.414 Catalogo-V1 [28155:207] DICT:{ imagen =「>」; nombre =「Articulo 6」; } 2011-08-20 14:26:47.414 Catalogo-V1 [28155:207] DICT:{ imagen =「>」; nombre =「Articulo 7」; } 2011-08-20 14:26:47.415 Catalogo-V1 [28155:207] DICT:{ imagen =「>」; nombre =「Articulo 8」; } 2011-08-20 14:26:47.415 Catalogo-V1 [28155:207] DICT:{ imagen =「>」; nombre =「Articulo 9」; } 2011-08-20 14:26:47.416 Catalogo-V1 [28155:207] DICT:{ imagen =「>」; nombre =「Articulo 10」; } 2011-08-20 14:26:47.416 Catalogo-V1 [28155:207] DICT:{ imagen =「>」; nombre =「Articulo 11」; } 2011-08-20 14:26:47.416 Catalogo-V1 [28155:207] * ** * ** * *** { imagen畫質= 「>」; nombre =「Articulo 11」;} ** * ** * ** * ***

+1

在循環中,您將* same *字典反覆插入到數組中,並且在每次迭代中,您都將替換鍵'nombre'和'imagen'的對象。 – albertamg

+0

我不知道你在做什麼,但這很醜陋!注意內存泄漏。 –

回答

2

是。 @albertamg在他上面的評論中是正確的。您的for循環應如下所示。

for (int y = 0; y < 11; y++) { 

    // Other codes here 

    NSMutableDictionary *dict = [NSMutableDictionary dictionary]; 
    [dict setObject:name2 forKey:@"nombre"]; 
    [dict setObject:imageView forKey:@"imagen"]; 
    [imagenesA insertObject:dict atIndex:y]; 
} 
+0

這個答案是否正確!謝謝你破裂! – David

+1

歡迎!你也應該感謝@albertamg。 – EmptyStack

+0

@David記得接受EmptyStack的回答 – albertamg