Objective-c:统计NSDictionary,但得到错误的结果



在实现下面的代码时,我得到了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

该键的值是一个包含两个键的字典:Bannertext

第二个Banner键的值是一个包含三个键的字典:datenametext。这是你数过的字典。

您有一本字典。外部字典有一个关键字"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*/

}

最新更新