2012-03-02 42 views
0

執行下面的代碼時,我得到了itemCount = 3,但它應該是itemCount = 1,因爲我指向Banner>Banner。有沒有人知道我爲什麼得到這個結果和任何修復?Objective-c:計算NSDictionary但得到錯誤結果

由於

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 

回答

3

字典的計數是在詞典的鍵的數量。

頂級字典有一個關鍵字:Banner

該鍵值是帶有兩個鍵的字典:Bannertext

第二Banner鍵的值是三個鍵的字典:datenametext。這是你計算的字典。

0

你的字典有鍵:「日期」,「名稱」,「文本」。

這是三。

1

你有一本字典的詞典。外部字典有一個鍵「Banner」,其值是內部字典。

內部詞典有3個鍵(日期,名稱和文本)。

此行檢索內字典(其具有3個值):

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

這裏是修復..

在XMLReader.m

,轉到此方法:

- (空)解析器:(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*/ 

}