我有一个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个值可以任何人帮帮我.. 提前谢谢......
答案 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)
以上答案是正确的您遵循此代码并解决您的问题。