0

2つのNSMutableArrayをNSMutableDictonaryに追加することで混乱しました。1
つはキー用、もう1つはオブジェクト用です。
キーが同じでない限り、これは機能し
ます。偶数がある場合は、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];
}

助けてくれてありがとう。

4

1 に答える 1

3

定義ごとの辞書では、コードを見るときに重複するキーは許可されていません。同じキーの下にN個のアイテムを格納する必要があります。

そのためには、キーごとにアイテムの配列を格納する必要があります。未テストの例(インラインで記述)

- (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];
}
于 2012-12-08T18:55:59.437 に答える