所以在这里我卡住了今天早上我的小项目的最简单的部分(或者我认为)。我们的目标是构建一个简单的XML解析器,它接受他们遇到的每个元素,并将其添加到最终将包含xml的所有键/值对的字典中。NSMutableDictionary不采取键/值对
所以这样
<xml>
<1stTag>text</1stTag>
<2ndTag>some more text</2ndTag>
</xml>
一个XML配置将在字典中结束了2键/值对:
{
1stTag:text;
2ndTag:some more text;
}
采用的NSXMLParser框架我以为我只是存储每遇到元素和文本变量self.elementInProgress和self.textInProgress(都是NSStrings)。元素完成后,我会将这对添加到字典中。
因此,这里是.h文件:
@interface MSParser : NSObject <NSXMLParserDelegate>
{
NSString *elementInProgress;
NSString *textInProgress;
NSMutableDictionary *parsedXMLDict;
}
@property (nonatomic, retain) NSString *textInProgress;
@property (nonatomic, retain) NSString *elementInProgress;
@property (nonatomic, retain) NSMutableDictionary *parsedXMLDict;
而且在执行文件中的相应的功能:
@synthesize textInProgress,elementInProgress,parsedXMLDict;
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
[self.parsedXMLDict setValue:self.textInProgress forKey:self.elementInProgress];
NSLog(@"%@",[self.parsedXMLDict valueForKey:self.elementInProgress]);
}
现在,在这里,我很难过,我的NSLog返回Null!我认为这是一个明智之举。我错过了什么?根据调试器,self.textInProgress和self.elementInProgress都被正确填充。我可以追踪到这一行,我称之为setValue ForKey,这又是根据文档,并已为我工作过一次以上。字典只是不采取值。根据文档,如果传递的setValue是零,那么它只会有趣,这里不是......任何想法?
这一切看起来不错,不是编译器错误或警告,它只是返回空值。正如我所说的,难倒了......
你有没有设置你的elementInProgress和textInProgress值? – Eiko 2010-10-02 12:43:55