所以在這裏我卡住了今天早上我的小項目的最簡單的部分(或者我認爲)。我們的目標是構建一個簡單的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