无法在for循环中向NSMutableArray添加对象

时间:2014-11-26 17:18:53

标签: ios objective-c arrays for-loop

我试图将字典键添加到数组中的对象,然后将它们添加到最终数组中:

NSMutableDictionary *newVen = [NSMutableDictionary dictionary];
NSMutableArray *final = [[NSMutableArray alloc] init];
for (NSDictionary *obj in self.venues) {
    [newVen setObject:[obj valueForKey:@"name"] forKey:@"name"];
    [final addObject:newVen];
}

问题是它只添加相同的名称'到最后一个数组,当我打印出来时,让我们在3个循环后说:

<__NSArrayM 0x79e26990>(
{
    name = Mustang;
},
{
    name = Mustang;
},
{
    name = Mustang;
}
)

我期待一系列不同的名字,例如野马,Ferarri,宝马

1 个答案:

答案 0 :(得分:1)

问题是你要添加相同的mutabledict三次,第一次使用第一个对象的名称,第二次使用第二个名称改变第一个和第二个,蚂蚁第三次你正在改变所有因为都是相同的mutableDict。 我想你里面可能不需要一个可变的dict,你可以使用它:

  NSMutableArray *final = [[NSMutableArray alloc] init];
for (NSDictionary *obj in self.venues) {
NSDictionary *newVen =@{@"name":[obj valueForKey:@"name"]};
[final addObject:newVen];
}

如果你需要你的dict里面的数组将是可变的使用这个:

      NSMutableArray *final = [[NSMutableArray alloc] init];
for (NSDictionary *obj in self.venues) {
NSMutableDictionary *newVen =[NSMutableDictionary dictionaryWithDictionary:@{@"name":[obj valueForKey:@"name"]}];
[final addObject:newVen];
}