在nsmutabledictionary中插入数组中的几个对象

时间:2013-05-23 11:05:38

标签: iphone ios objective-c

我有一个30个图像的数组我想只添加15个图像到nsmutable字典,并且要随机添加

我正在使用以下代码

for (m = 0; m < 20; m++)
{   
 rnd = arc4random_uniform(FrontsCards.count);       

 dic=[[NSMutableDictionary alloc]init];     
 [dic setObject:[NSNumber numberWithInt:rnd] forKey:@"Images"]; 
 NSLog(@"%@",dic);

}

这里的问题是m = 0条目在字典中得到,对于m = 1再次一个条目进入字典替换第一个,最后我只得到最后一个值所需的输出是所有20个值可以任何人帮帮我.. 提前谢谢......

6 个答案:

答案 0 :(得分:1)

您为所设置的每个号码使用相同的标签“图像”。因此它会一次又一次地被替换

 dic=[[NSMutableDictionary alloc]init];     


for (m = 0; m < 20; m++)
{   
    rnd = arc4random_uniform(FrontsCards.count);       

    [dic setObject:[NSNumber numberWithInt:rnd] forKey:[NSString stringWithFormat:@"Images_%d",rnd]; 


}

 NSLog(@"%@",[dic description]);

答案 1 :(得分:0)

我在你的代码中发现了很多问题:
1.你想要添加15张图像,但要制作20的循环;
你在侧循环中创建了Dictionary,因此它将创建20次。每次创建新词典时都会删除旧词典 3.您使用相同的密钥存储所有值。您必须为每个项目使用唯一键。其他明智的旧itel被取代

像这样使用

dic=[[NSMutableDictionary alloc]init]; 

for (m = 0; m < 15; m++)
{   
     rnd = arc4random_uniform(FrontsCards.count);       

     [dic setObject:[NSNumber numberWithInt:rnd] forKey:[NSString  stringWithFormat@"Image%d",rnd]]; 
}
NSLog(@"%@",dic);

答案 2 :(得分:0)

您正在分配新的dic evrytime。所以它被覆盖了。试试这个。也许mayur说你不能使用相同的密钥。

dic=[[NSMutableDictionary alloc]init]; 
for (m = 0; m < 20; m++)
{   
 rnd = arc4random_uniform(FrontsCards.count);       


 [dic setObject:[NSNumber numberWithInt:rnd] forKey:[NSString stringWithFormat:@"Images_%d",rnd]]; 


}
 NSLog(@"%@",dic);

答案 3 :(得分:0)

您不能使用相同的键输入多个对象或图像...此处该键设置为图像。因此,将一次又一次地设置名为images的键的值...要么必须在每种情况下为键指定不同的名称,要么使用数组来存储所有图像。

同样在for循环之外声明字典。请尝试以下代码。

dic=[[NSMutableDictionary alloc]init];   
for (m = 0; m < 20; m++)
{   
 rnd = arc4random_uniform(FrontsCards.count);       
 [dic setObject:[NSNumber numberWithInt:rnd] forKey:@"Images_%d", m]; 
 NSLog(@"%@",dic);

}

答案 4 :(得分:0)

在这种情况下,您需要使用NSMutableArray,因为您一次又一次地使用相同的键,因此最后一个值将被新值替换。所以有2个选项

1)首先对每张图片使用不同的密钥。

2)您可以使用NSMutableArry添加新对象。

答案 5 :(得分:0)

以上答案是正确的您遵循此代码并解决您的问题。