NSMutableDictionary条目由init与键和对象数组不完整

时间:2012-12-08 18:51:47

标签: xcode nsmutablearray key nsdictionary

通过向NSMutableDictonary添加两个NSMutableArrays,一个用于键,一个用于对象,使我感到困惑。
只要Keys不一样,这就可以正常工作
如果有,我只得到我的Dict中的最后一个对象。
如果我将我的对象和对象更改为按键,一切正常。
任何人都可以帮助我吗?

以下是我的输出:

2012-12-08 19:30:40.906 Test[12015:c07] myKeys: (
"Bauchumfang & Gewicht",
"Bauchumfang & Gewicht",
"Stress & Entspannung",
"Stress & Entspannung",
"Mein Rauchverhalten",
"Mein Rauchverhalten",
"Blutdruck & Puls",
"Blutdruck & Puls",
"Blutzucker & Diabetes",
"Blutzucker & Diabetes",
"Meine Stimmung",
"Meine Stimmung",
"R\U00fccken & Bewegung",
"R\U00fccken & Bewegung",
"R\U00fccken & Bewegung",
Schlafrhythmus,
Schlafrhythmus,
"Schrittz\U00e4hler"
)
2012-12-08 19:30:40.907 Test[12015:c07] myObjects: (
"Mein Bauchumfang",
"Mein Gewicht",
"Mein Entspannungsniveau",
"H\U00e4ufigkeit der Entspannungsmomente",
Rauchverhalten,
"Verlangen nach einer Zigarette",
"Systolischer Wert",
"Diastolischer Wert",
"Meine bewusste Ern\U00e4hrung mit Diabetes",
"Meine Blutzucker-Werte",
"Mein Befinden",
"Meine Aktivit\U00e4ten",
"Umsetzung meiner R\U00fccken\U00fcbungen",
"Das Befinden meines R\U00fcckens",
"Meine sportlichen Aktivit\U00e4ten",
"Meine Schlafqualit\U00e4t",
"Mein Energieniveau",
"Meine Schritte"
)
2012-12-08 19:30:40.907 Test[12015:c07] myDictionary: {
"Bauchumfang & Gewicht" = "Mein Gewicht";
"Blutdruck & Puls" = "Diastolischer Wert";
"Blutzucker & Diabetes" = "Meine Blutzucker-Werte";
"Mein Rauchverhalten" = "Verlangen nach einer Zigarette";
"Meine Stimmung" = "Meine Aktivit\U00e4ten";
"R\U00fccken & Bewegung" = "Meine sportlichen Aktivit\U00e4ten";
Schlafrhythmus = "Mein Energieniveau";
"Schrittz\U00e4hler" = "Meine Schritte";
"Stress & Entspannung" = "H\U00e4ufigkeit der Entspannungsmomente";
}

和我的实施:

- (void)objectLoader:(RKObjectLoader *)objectLoader
didLoadObjects:(NSArray *)objects {

  menuItems = [[NSMutableArray alloc]init];
  for (Trackers *trackers in objects) {

    if ([trackers.assigned isEqualToString:@"true"]) {
        [menuItems addObject:[trackers name]];
        [groups addObject:[trackers category]];
    }

  }
  NSLog(@"myKeys: %@", groups);
  NSLog(@"myObjects: %@", menuItems);
  NSMutableDictionary *menuGroups = [[NSMutableDictionary alloc]
  initWithObjects:menuItems forKeys:groups];
  NSLog(@"myDictionary: %@", menuGroups);
  [menuList addObject:menuGroups];
  contentLoaded = YES;
  [settingsTable reloadData];
}

请求任何帮助。

1 个答案:

答案 0 :(得分:3)

根据定义,字典不允许重复键 在查看代码时,您希望将N个项目存储在同一个密钥下。

要这样做,你需要为每个键存储一个项目数组.. UNTESTED示例(内联编写)

- (void)objectLoader:(RKObjectLoader *)objectLoader
didLoadObjects:(NSArray *)objects {
  NSMutableDictionary *menuGroups = [[NSMutableDictionary alloc] init];
  for (Trackers *trackers in objects) {

    if ([trackers.assigned isEqualToString:@"true"]) {
        NSMutableArray *array = [menuGroups objectForKey:[trackers category]];
        if(!array) {
            array = [NSMutableArray array];
            [menuGroups setObject:array forKey:[trackers category]];
        }
        [array addObject:[trackers name]];
    }

  }


  contentLoaded = YES;
  [settingsTable reloadData];
}