我有由许多小数组组成的 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 组成。
编辑
似乎我们需要一个 DEEP COPY 这里。我找到了一个解决方案,但它是一个 hack,但效果很好,而且很简单:
openedCartProduct = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:[SharedAppDelegate.myEngine.shoppingCart objectAtIndex:indexPath.row]]];
Best Answer-推荐答案 strong>
您正在复制对原始小数组的引用。所以当你改变它时,它指向第一个数组中的小数组。这包含所有原始内容。如果您想在不更改第一个数组的情况下对其进行更改,则需要执行复制,在本例中为深层复制,因为它包含一个 mutableDictionary(我假设您也想复制它)。
关于iOS:将对象从 oldArray 复制到 newArray,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/17700219/
|