Objective-c:算一个NSDictionary,但结果错了

时间:2012-03-02 05:01:34

标签: objective-c ios

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

LOG:

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

4 个答案:

答案 0 :(得分:3)

字典的计数是字典中的键数。

顶级词典有一个键:Banner

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

第二个Banner键的值是包含三个键的字典:datenametext。这是你计算的字典。

答案 1 :(得分:1)

你有一本字典词典。外部字典有一个键“Banner”,其值为内部字典。

内部词典有3个键(日期,名称和文字)。

此行检索内部字典(具有3个值):

//   outer                                 inner                   count
[[[[[xmlDictionary objectForKey:@"Banner"] objectForKey:@"Banner"] count];

答案 2 :(得分:0)

你的字典有密钥:“日期”,“名字”,“文字”。

那是三个。

答案 3 :(得分:0)

这是修复..

在XMLReader.m中,转到这个方法:

- (void)parser:(NSXMLParser *)parser 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*/

}