您好我想知道当您点击一个按钮时它会在数组中添加一个新对象,它不会影响其他对象,如下所示:
这是我的代码:
x = x + 1;
dictData = [[NSMutableDictionary alloc] init];
for (int i = 0; i < x; i++) {
[dictData setObject:[menuData itemName] forKey:@"dishName"];
[dictData setObject:@"1" forKey:@"quantity"];
[dictData setObject:[menuData itemPrice] forKey:@"price"];
[arrMut addObject:dictData];
}
这是当前的输出
{
name = charles1;
},{
name = charles1;
}
这是预期的输出
{
name = charles1;
},{
name = charles2;
}
答案 0 :(得分:1)
因为您要添加相同的字典
将其更改为
for (int i = 0; i < x; i++) {
dictData = [[NSMutableDictionary alloc] init]; // move this line to inside of the loop
[dictData setObject:[menuData itemName] forKey:@"dishName"];
[dictData setObject:@"1" forKey:@"quantity"];
[dictData setObject:[menuData itemPrice] forKey:@"price"];
[arrMut addObject:dictData];
}
或
for (int i = 0; i < x; i++) {
[arrMut addObject:[@{@"dishName" : [menuData itemName],
@"quantity" : @"1",
@"price" : [menuData itemPrice],
} mutableCopy]];
}
答案 1 :(得分:0)
[menuData itemName]方法似乎每次都返回相同的对象。 您可以在数组中插入menuData对象,然后在for循环的每次迭代中访问menuData对象。
NSMutableArray *arrMenuData = //This array should contain the menuData objects
for (int i = 0; i < x; i++) {
dictData = [[NSMutableDictionary alloc] init]; // move this line to inside of the loop
[dictData setObject:[[arrMenuData objectAtIndex:i] itemName] forKey:@"dishName"]; //A typecast to menuData type may be required, please test.
[dictData setObject:@"1" forKey:@"quantity"];
[dictData setObject:[[arrMenuData objectAtIndex:i] itemPrice] forKey:@"price"];
[arrMut addObject:dictData];
}