2

次のようにオブジェクト「m」を追加してNSMutableArrayいます。

    [m setObject:a forKey:@"a"];
    [m setObject:b forKey:@"b"];
    [m setObject:c forKey:@"c"];
    [m setObject:d forKey:@"d"];

    [myArray addObject:m];

    [m release];

1つのオブジェクトでは正常に機能しますが、別のオブジェクトが追加されると、myArray内のすべてのオブジェクトに対して同じ値が繰り返されます。

これを回避する方法は?

助けてください。

ありがとう。

4

2 に答える 2

11

NSMUtablearrayデータを入力して挿入するたびに個別のインスタンスを作成する必要があります。そうしないと、同じインスタンスを再利用し続けるため、最後の状態のみが配列の各位置に表示されます。

NSMutableArray *myArray = [NSMutableArray array];
for (int i = 0 ; i != 10 ; i++) {
    NSMutableDictionary *m = [NSMutableDictionary dictionary];
    // Presumably, this part is done differently on each iteration
    [m setObject:a forKey:@"a"];
    [m setObject:b forKey:@"b"];
    [m setObject:c forKey:@"c"];
    [m setObject:d forKey:@"d"];
    [myArray addObject:m];
}
于 2012-05-17T00:43:10.793 に答える
1

これを試して:

 NSMutableDictionary* m = [NSMutableDictionary dictionary];
[m setObject:@"1" forKey:@"a"];
[m setObject:@"2" forKey:@"b"];
[m setObject:@"3" forKey:@"c"];
[m setObject:@"4" forKey:@"d"];

NSMutableArray* myArray = [NSMutableArray array];
[myArray addObject:m];

NSLog(@"%@", m);
NSLog(@"%@", myArray);
于 2012-05-17T01:05:17.490 に答える