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 回答