在实现下面的代码时,我得到了itemCount = 3
,但它应该是itemCount = 1
,因为我指向Banner
>Banner
。有人知道我为什么会得到这个结果吗?
感谢
NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLData:contents error:&parseError];
NSLog(@"xmlDictionary = %@", xmlDictionary);
int itemCount = [[[xmlDictionary objectForKey:@"Banner"] objectForKey:@"Banner"] count];
NSLog(@"itemCount = %d", itemCount);
日志:
2012-03-02 12:54:49.728 BROADWAY[541:ef03] xmlDictionary = {
Banner = {
Banner = {
date = {
text = "n 29/02/2012";
};
name = {
text = "n n iPhone_Banner_HSB.jpg";
};
text = "n ";
};
text = "n";
};
}
2012-03-02 12:54:49.728 BROADWAY[541:ef03] itemCount = 3
字典的计数是字典中键的数量。
顶级字典有一个关键字:Banner
。
该键的值是一个包含两个键的字典:Banner
和text
。
第二个Banner
键的值是一个包含三个键的字典:date
、name
和text
。这是你数过的字典。
您有一本字典。外部字典有一个关键字"Banner",其值为内部字典。
内部字典有3个关键字(日期、名称和文本)。
这一行检索内部字典(有3个值):
// outer inner count
[[[[[xmlDictionary objectForKey:@"Banner"] objectForKey:@"Banner"] count];
您的字典有关键字:"date"、"name"、"text"。
一共三个。
以下是修复程序。。
在XMLReader.m中,转到以下方法:
-(void)解析器:(NSXMLParser*)解析器didEndElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*qName{
//comment this line below
//[dictInProgress setObject:textInProgress forKey:kXMLReaderTextNodeKey];
//add the fix code
/*FIX*/
NSString * trimmedString = [textInProgress stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"n"]];
trimmedString=[trimmedString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
/*FIX*/
}