OGeek|极客世界-中国程序员成长平台

标题: iOS:将对象从 oldArray 复制到 newArray [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 12:34
标题: iOS:将对象从 oldArray 复制到 newArray

我有由许多小数组组成的 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-推荐答案


您正在复制对原始小数组的引用。所以当你改变它时,它指向第一个数组中的小数组。这包含所有原始内容。如果您想在不更改第一个数组的情况下对其进行更改,则需要执行复制,在本例中为深层复制,因为它包含一个 mutableDictionary(我假设您也想复制它)。

关于iOS:将对象从 oldArray 复制到 newArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17700219/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4