Iphone 将条目添加到NSDictionary不会';行不通
我有以下问题。我想在字典中添加4个条目,这是xml驱动的。因此,xml文件中有4个条目。我在xml解析器中使用以下代码添加所有条目:Iphone 将条目添加到NSDictionary不会';行不通,iphone,objective-c,xml,ios,Iphone,Objective C,Xml,Ios,我有以下问题。我想在字典中添加4个条目,这是xml驱动的。因此,xml文件中有4个条目。我在xml解析器中使用以下代码添加所有条目: - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ if ([elementName isEqualT
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"Placemark"]) {
NSString *batsen = [placemarkData objectForKey:@"name"];
[Placemarks setObject:placemarkData forKey:batsen];
NSLog(@"adding story: %@", batsen);
}
}
问题是他似乎覆盖了Placemarks中的条目。如果我读出日志文件,我只看到最后一个条目。这很奇怪,因为日志(添加故事)确实显示了4条日志消息
我使用以下代码读取Placemark字典:
NSEnumerator *enumerator = [appDelegate.Placemarks keyEnumerator];
id key;
while ((key = [enumerator nextObject])) {
/* code that uses the returned key */
NSString *theElement = key;
NSLog(@"Element: %@", theElement);
}
有人有什么建议吗?Thnx提前当您为NSMutableDictionary的现有键设置一个值时,会释放上一个值:
If aKey already exists in the dictionary,
the dictionary’s previous value object for that key is sent a release message
and anObject takes its place.
在您的情况下,字典键应该映射到一个数组(NSMutableArray),这样您就可以存储一个引用4个xml元素的键。NSMutableDictionary需要将条目添加到字典中。此代码段使用DRY方法简化创建新的、扩展的不可变的NSDictionary:
// Make an immutable dictionary by combining 2 dictionaries (new entries are added, old entries are updated)
+ (NSDictionary *)dictionaryFromDictionary:(NSDictionary *)original WithAddedEntries:(NSDictionary *)entriesToAdd
{
NSMutableDictionary *final = [NSMutableDictionary dictionaryWithDictionary:original];
[final addEntriesFromDictionary:entriesToAdd];
// Done
return [NSDictionary dictionaryWithDictionary:final];
}
谢谢你的回答!然而,关键是每一次都不同,并不存在。变量“batsen”在每次执行代码时都是不同的(我可以在日志中看到这一点)如何以及何时初始化Placemarks。我希望它是一个(读写,保留)属性。似乎你每次都在初始化。顺便说一句,IVAR和属性的第一个字母的正常约定为小写,如appDelegate.placemarks。使用Placemarks意味着它是一个类声明