0

在我的 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";
    }
)

他们都指的是同一个副本。

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

4

2 回答 2

1

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

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

于 2012-06-21T11:53:38.810 回答
1

您只是在复制对象指针数组,而不是对象本身。请参阅这篇关于深度复制的文章。

于 2012-06-21T11:55:00.490 回答