无法将一个可变数组“复制”到另一个

时间:2012-06-21 11:45:43

标签: objective-c ios xcode cocoa-touch nsmutablearray

在我的iPhone应用中。

我将一个可变数组(带字典)复制到另一个。

就像

resultsToDisplay = [[[NSMutableArray alloc]initWithArray:resultsPassed]mutableCopy];


  2012-06-21 17:07:07.441 AllinoneCalc[3344:f803] Results  To Display (
        {
        lbl = "Monthly EMI";
        result = "75.51";
    }
)
2012-06-21 17:07:08.224 AllinoneCalc[3344:f803] Results Passed (
        {
        lbl = "Monthly EMI";
        result = "75.51";
    }
)

然后我正在修改其中一个。

[[resultsToDisplay objectAtIndex:i] setValue:[NSString stringWithFormat:@"%.2f",[[[resultsPassed objectAtIndex:i] valueForKey:@"result"] floatValue]] forKey:@"result"];

但是正在发生的事情正在被编辑。

2012-06-21 17:07:08.703 AllinoneCalc[3344:f803] Results Passed (
        {
        lbl = "Monthly EMI";
        result = "75.00";
    }
)
2012-06-21 17:07:08.705 AllinoneCalc[3344:f803] Results  To Display (
        {
        lbl = "Monthly EMI";
        result = "75.00";
    }
)

他们俩都指的是同一份副本。

如何解决这个问题。我想只修改一个数组。

2 个答案:

答案 0 :(得分:1)

数组(或可变数组)只是一个对象列表,您正在修改其中一个数组中引用的对象之一。第二个数组仍然指向同一个对象,所以它也改变了是正常的......

您正在复制数组:意味着您正在复制对象列表,而不是复制列表中的所有对象。

答案 1 :(得分:1)

您只是复制对象指针数组,而不是自己的对象。有关深度复制的信息,请参阅this article