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

次に、そのうちの 1 つを変更しています。

[[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";
    }
)

どちらも同じコピーを参照しています。

これを解決する方法。1 つの配列のみを変更したい。

4

2 に答える 2

1

配列(または可変配列)は単なるオブジェクトのリストであり、配列の1つで参照されているオブジェクトの1つを変更しています。2番目の配列はまだ同じオブジェクトを指しているので、それも変更されるのが普通です...

配列をコピーしています。つまり、リスト内のすべてのオブジェクトをコピーするのではなく、オブジェクトのリストをコピーしています。

于 2012-06-21T11:53:38.810 に答える
1

オブジェクト自体ではなく、オブジェクトポインタの配列のみをコピーしています。ディープコピーについては、この記事を参照してください。

于 2012-06-21T11:55:00.490 に答える