如何在不影响其他对象iOS的情况下在数组中添加新对象

时间:2014-08-14 03:54:13

标签: ios objective-c

您好我想知道当您点击一个按钮时它会在数组中添加一个新对象,它不会影响其他对象,如下所示:

这是我的代码:

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;

}

2 个答案:

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

}