0

我将数组添加到字典中,然后从数组中删除所有对象。当我打印字典时,它也显示为空。意味着字典中存在的数组数据也被删除。

if ([[[testMenuGroupAry objectAtIndex:0]objectAtIndex:group] isEqualToString:[filteredAry objectAtIndex:objCount]])
    {
        NSLog(@"object count is %d",objCount);
        [groupAry addObject:[array1 objectAtIndex:group]];
    }

    [tempDict setValue:groupAry forKey:[filteredAry objectAtIndex:objCount]];
    [groupAry removeAllObjects];

    NSLog(@"before Dictionary temp Dict : %@",tempDict);

tempdict 也显示空。为什么?

4

4 回答 4

1

因为你删除了它的所有元素。将对象添加到集合不会复制它们,它只是保留实例。

于 2013-05-16T10:45:28.390 回答
1

发生这种情况是因为您的字典仅存储对您的数组的引用。它不会复制整个数组。您可以做的是先复制数组,然后将其存储在字典中。

于 2013-05-16T10:45:50.570 回答
0

如果你想让 tempdict 不为空。你应该这样做: [tempDict setValue:[NSMutableArray arrayWithArray:groupAry] forKey:[filteredAry objectAtIndex:objCount]]; 它制作了 groupAry 的副本。

于 2013-05-16T10:50:14.787 回答
0

更改这行代码:

[groupAry addObject:[array1 objectAtIndex:group]];

[groupAry addObject:[[array1 objectAtIndex:group] mutableCopy]];

这将有助于保留对象,并且您的数组不会变为 nil。

于 2013-05-16T10:48:34.160 回答