Objective-c NSMutableDictionary 设置数组保持为空

Objective-c NSMutableDictionary set with an array keep empty

我是新来的,但我过去常常在需要的时候阅读这个网站,但今天,我找不到问题的答案。

我会尽量详细地解释我的问题。

我需要将数组添加到 NSMutableDictionary 中的特定键。添加到其中的密钥正确,但我的字典值保持为空。这是我的代码:

dictionarySection = [[NSMutableDictionary alloc] initWithObjects:arraySectionValues forKeys:arraySectionKeys];
dictionaryClip = [[NSMutableDictionary alloc] initWithCapacity:[arraySectionKeys count]];

NSArray *tabSection = [dictionarySection allKeys];
id key,value;
for (int j=0; j<tabSection.count; j++)
{
    array = [NSMutableArray array];
    key = [tabSection objectAtIndex: j];
    value = [dictionarySection objectForKey: key];
    //NSLog (@"Key: %@ for value: %@", key, value);
    for (SMXMLElement *clip in [books childrenNamed:@"clip"]) {
        if([[clip valueWithPath:@"categorie"] isEqualToString:value]){
            [array addObject:[clip valueWithPath:@"titre"]];
        }
    }
    NSLog(@"Test array %@",array);
    [dictionaryClip setObject:array forKey:key];
    [array removeAllObjects];
    NSLog(@"Test dictionary %@",dictionaryClip);
}

这里是 NSLog 结果:

2015-07-15 14:34:48.272 test[15533:390301] Test array (
"CDS : ITV Philippe Dunoyer",
"FLASH INFO NCI : crise des banques",
"Les Roussettes sont-elles dangereuses ?",
"Flash infos banques gr\U00e8ve",
"CDS : ITV Paul Langevin",
"CDS : ITV Valls",
"CDS : ITV Victor Tutugoro",
"CDS : ITV Roch Wamytan",
"NCGLAN 20",
"Flash Info : dispositif anti-d\U00e9linquance"
)
2015-07-15 14:34:48.273 test[15533:390301] key : 0
2015-07-15 14:34:48.273 test[15533:390301] Test dictionary {
    0 =     (
    );
}

正如我们所见,数组已填充,字典的键是正确的,但数组不在我的字典中。

我该如何用这个数组填充我的字典?

非常感谢大家的回答:)

Ps : 请原谅我的英语 :(

在 Objective-C 中,数组是引用类型。

方法setObject:forKey:将指向数组的指针放入字典中,不复制数组。

如果从数组中删除所有对象,它们也会从字典中消失

您正在为您在字典中传递的同一数组实例调用 removeAllObjects: 方法,因此它的对象正在存储的数组中被删除。尝试传递该数组的副本或具有相同对象的数组的新实例。

示例:

[dictionaryClip setObject:[array copy] forKey:key];