gpt4 book ai didi

iOS:将对象从 oldArray 复制到 newArray

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:02 26 4
gpt4 key购买 nike

我有一个由许多小数组组成的 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]]];

最佳答案

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com