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];
我是新来的,但我过去常常在需要的时候阅读这个网站,但今天,我找不到问题的答案。
我会尽量详细地解释我的问题。
我需要将数组添加到 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];