在我的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";
}
)
他们俩都指的是同一份副本。
如何解决这个问题。我想只修改一个数组。
答案 0 :(得分:1)
数组(或可变数组)只是一个对象列表,您正在修改其中一个数组中引用的对象之一。第二个数组仍然指向同一个对象,所以它也改变了是正常的......
您正在复制数组:意味着您正在复制对象列表,而不是复制列表中的所有对象。
答案 1 :(得分:1)
您只是复制对象指针数组,而不是自己的对象。有关深度复制的信息,请参阅this article。