我有由许多小数组组成的 oldArray。现在我想取其中一个对象(一个小数组),修改它,然后(如果用户点击按钮)替换它。要做到这一点:
第 1 步 - 我创建了一个新数组,用那个小对象初始化了 newArray。
openedCartProduct = nil;
openedCartProduct = [NSMutableArray array];
[openedCartProduct addObjectsFromArray: [SharedAppDelegate.myEngine.shoppingCart objectAtIndex:indexPath.row]];
第 2 步 - 修改阵列。
[[openedCartProduct objectAtIndex:0] setObject:[NSNumber numberWithFloat:[inputRabatLabel.text floatValue]] forKey:kRABAT_KEY];
第 3 步 - 替换 oldArray 中的对象。
在第 2 步中,修改也发生在 oldArray 中,甚至在替换对象之前。我在这里错过了什么吗?
提前谢谢各位!:)
编辑: 修改的对象是一个小数组,由我正在修改的索引 0 处的 NSMutableDictionary 组成。
编辑 似乎我们需要在这里进行深度复制。我找到了一个解决方案,它是一个 hack,但工作正常,并且足够简单:
openedCartProduct = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:[SharedAppDelegate.myEngine.shoppingCart objectAtIndex:indexPath.row]]];