NSMutableArray insertObject:atIndex:问题

时间:2011-08-20 12:34:55

标签: iphone objective-c insert for-loop nsmutablearray

这个方法有问题。我有11个这样名字的图像:Articulo 1.png,Articulo 2.png等我不知道为什么,但我的图像阵列只有最后一张图像。我做错了吗?

以下是我的例子:

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 =“&gt;”;       nombre =“Articulo 1”; 2011-08-20 14:26:47.411   Catalogo-V1 [28155:207] DICT:{       imagen =“&gt;”;       nombre =“Articulo 2”; 2011-08-20 14:26:47.412   Catalogo-V1 [28155:207] DICT:{       imagen =“&gt;”;       nombre =“Articulo 3”; 2011-08-20 14:26:47.412   Catalogo-V1 [28155:207] DICT:{       imagen =“&gt;”;       nombre =“Articulo 4”; 2011-08-20 14:26:47.413   Catalogo-V1 [28155:207] DICT:{       imagen =“&gt;”;       nombre =“Articulo 5”; 2011-08-20 14:26:47.414   Catalogo-V1 [28155:207] DICT:{       imagen =“&gt;”;       nombre =“Articulo 6”; 2011-08-20 14:26:47.414   Catalogo-V1 [28155:207] DICT:{       imagen =“&gt;”;       nombre =“Articulo 7”; 2011-08-20 14:26:47.415   Catalogo-V1 [28155:207] DICT:{       imagen =“&gt;”;       nombre =“Articulo 8”; 2011-08-20 14:26:47.415   Catalogo-V1 [28155:207] DICT:{       imagen =“&gt;”;       nombre =“Articulo 9”; 2011-08-20 14:26:47.416   Catalogo-V1 [28155:207] DICT:{       imagen =“&gt;”;       nombre =“Articulo 10”; 2011-08-20 14:26:47.416   Catalogo-V1 [28155:207] DICT:{       imagen =“&gt;”;       nombre =“Articulo 11”; 2011-08-20 14:26:47.416   Catalogo-V1 [28155:207] * ** * ** * *** < /强> {        imagen =“&gt;”;       nombre =“Articulo 11”; } ** * ** * ** * ***

1 个答案:

答案 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];
}