为什么我词典中的孩子不会填满

时间:2009-09-03 15:25:08

标签: objective-c nsdictionary

大家好我正在使用NSXMLParser来解析一些xml数据。 我正在使用此数据构建树表示,以便为可向下钻取创建层次结构。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
 attributes:(NSDictionary *)attributeDict {

 if([elementName isEqualToString:@"exercises"]) {
   //init tree 
  appDelegate.Tree = [NSMutableDictionary new];
  appDelegate.Rows = [NSMutableArray new];
  [appDelegate.Tree setObject:appDelegate.Rows forKey:@"Rows"];
   ...

现在如果正在读取我的xml中的元素menuitem,那么它将初始化并将theChildren添加到menu_item字典

if([elementName isEqualToString:@"menuitem"]) {


  appDelegate.theChildren = [NSMutableArray new];
  [appDelegate.menu_item setObject:appDelegate.theChildren forKey:@"Children"];

这一切都按计划进行。

然而,以下情况并非按照我希望的方式进行。 当我看到另一个标签(workout_mob)时,我想要填充孩子,这只发生在底部字典项目中。

http://img188.imageshack.us/img188/7052/picture4efx.png

if([elementName isEqualToString:@"workout_mob"]) {

  appDelegate.work_out_mob = [NSMutableDictionary new];


  [appDelegate.theChildren addObject:appDelegate.work_out_mob];

有没有人知道为什么它至少不能填充我的两个项目我的意思是它将Children数组添加到他们两个中,所以为什么只剩下最后一个。如果我在我的xml代码中添加另一个xmlline,如下所示:

<menu_mob>
   <menuitem id="1" text="Press this for exercises" pic="workout" />
   <menuitem id="2" text="VirtuaGym online" pic="online" />
                    *<menuitem id="3" text="the Added Line" pic="online" />*
 </menu_mob>

然后它会将所有Children项添加到底部menuitem(想象另一个字典项(3))。 那为什么呢?

1 个答案:

答案 0 :(得分:0)

MMm似乎我正在重置我的阵列;)所以问题解决了。