2010-06-10 75 views
0
nodes = [doc nodesForXPath:@"//user" error: nil]; 
      for (CXMLElement *node in nodes) { 
       [itemPreDict setObject:[[node attributeForName:@"name"] stringValue] forKey:@"name"]; 
       [itemPreDict setObject:[[node attributeForName:@"gender"] stringValue] forKey:@"gender"]; 
       [itemPreDict setObject:[[node attributeForName:@"dob"] stringValue] forKey:@"dob"]; 

       [itemDict setObject:itemPreDict forKey:[[node attributeForName:@"name"] stringValue]]; 

      } 

在循環結束時,我得到了10個記錄(10個用戶),列表中最後一個用戶的信息相同,我怎樣才能得到10個不同用戶信息的字典。請幫幫我!for iPhone中的循環

回答

0

您一次又一次地重寫相同itemPreDict。要存儲不同的信息,您需要創建10個不同的字典。嘗試

 for (CXMLElement *node in nodes) { 
      NSMutableDictionary* itemPreDict = [[NSMutableDictionary alloc] init]; 
      // ^---------- 
      [itemPreDict setObject:[[node attributeForName:@"name"] stringValue] forKey:@"name"]; 
      [itemPreDict setObject:[[node attributeForName:@"gender"] stringValue] forKey:@"gender"]; 
      [itemPreDict setObject:[[node attributeForName:@"dob"] stringValue] forKey:@"dob"]; 

      [itemDict setObject:itemPreDict forKey:[[node attributeForName:@"name"] stringValue]]; 
      // v---------- 
      [itemPreDict release]; 
     } 

改爲。

(因爲你需要創建一個字典,無論如何,使用-initWithObjectsAndKeys:而不是調用-setObject:三次。這也讓itemPreDict是一個NSDictionary代替的NSMutableDictionary。)

+0

謝謝!其作品! :) – victor 2010-06-10 10:51:55