0

配列を辞書に追加してから、配列からすべてのオブジェクトを削除します。辞書を印刷すると、空でも表示されます。辞書に存在する配列データも削除されることを意味します。

if ([[[array objectAtIndex:0]objectAtIndex:i] isEqualToString:[filteredAry objectAtIndex:j]])
{
    [menuAry addObject:[array1 objectAtIndex:i]];
}

[tempDict setValue:menuAry forKey:[filteredAry objectAtIndex:j]];
[menuAry removeAllObjects];

tempdict が空と表示されるのはなぜですか?

4

1 に答える 1

1

ディクショナリに追加する配列は、すべてのオブジェクトを削除する配列とまったく同じオブジェクトです。ディクショナリに追加しても、新しいオブジェクトは作成されません。同じオブジェクトへの参照が追加されるだけです。

それらを分離したい場合は、次のようにコピーを辞書に追加する必要があります。

NSMutableArray *copiedArray = [[menuAry mutableCopy] autorelease];
[tempDict setObject:copiedArray forKey:[filteredAry objectAtIndex:j]];
//...

ARC を使用する場合は、autorelease.

于 2013-05-19T18:11:43.020 に答える