Auf Array im Array zugreifen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Auf Array im Array zugreifen

    Ich hab hier eine Property-List die wie folgt aussieht

    Quellcode

    1. <array>
    2. <dict>
    3. <key>NAME</key>
    4. <string>Audi</string>
    5. <key>MODELS</key>
    6. <array>
    7. <dict>
    8. <key>MODELLNAME</key>
    9. <string>A1</string>
    10. <key>PICTURE</key>
    11. <string>bild.png</string>
    12. <key>DESCRIPTION</key>
    13. <string>Der Audi A1 ist ...</string>
    14. </dict>
    15. <dict>
    16. <key>MODELLNAME</key>
    17. <string>A2</string>
    18. <key>PICTURE</key>
    19. <string>bild.png</string>
    20. <key>DESCRIPTION</key>
    21. <string>Der Audi A2 ist ...</string>
    22. </dict>
    23. </array>
    24. </dict>
    25. <dict>
    26. <key>NAME</key>
    27. <string>BMW</string>
    28. <key>MODELS</key>
    29. <array>
    30. <dict>
    31. <key>MODELLNAME</key>
    32. <string>1er</string>
    33. <key>PICTURE</key>
    34. <string>bild.png</string>
    35. <key>DESCRIPTION</key>
    36. <string>BMW 1er top</string>
    37. </dict>
    38. <dict>
    39. <key>MODELLNAME</key>
    40. <string>3er</string>
    41. <key>PICTURE</key>
    42. <string>bild.png</string>
    43. <key>DESCRIPTION</key>
    44. <string>BMW 3er top</string>
    45. </dict>
    46. </array>
    47. </dict>
    48. </array>
    Alles anzeigen


    Um die Daten in einer TableView anzuzeigen habe ich das geamcht:

    cell.textLabel.text = [[autoArray objectAtIndex:indexPath.row]objectForKey:NAME];

    nun soll ein detailTextLabel die Modelle anzeigen:

    Das hab ich so gelöst:

    Quellcode

    1. NSDictionary *modellDaten = [(NSArray *)[(NSDictionary *)[autoArray objectAtIndex:indexPath.row] objectForKey:MODELS]objectAtIndex:indexPath.row];
    2. cell.detailTextLabel.text = [modellDaten objectForKey:MODELLNAME];


    Das Problem ist, dass es nicht so funktioniert wie ich es mir vorgestellt habe: Er zeigt bei Audi den A1 und bei BMW den 3er an, ich denke es liegt sicherlich an indexPath.row aber ich weiß nicht wie ich das lösen soll, dass er mir alle Modelle eines Herstellers im detailTextLabel anzeigt.

    Jemand ne Idee??
  • Miralem23 schrieb:

    Das Problem ist, dass es nicht so funktioniert wie ich es mir vorgestellt habe: Er zeigt bei Audi den A1 und bei BMW den 3er an, ich denke es liegt sicherlich an indexPath.row aber ich weiß nicht wie ich das lösen soll, dass er mir alle Modelle eines Herstellers im detailTextLabel anzeigt.

    Det wundert mich nicht...
    Du willst ALLE Objekte haben, die MODELS als Key haben, oder?
    Dann mach dat doch einfach...

    Miralem23 schrieb:

    Jemand ne Idee??

    Schon mal was von Schleifen gehört?

    C-Quellcode

    1. NSArray *modellDaten = [[autoArray objectAtIndex:indexPath.row] objectForKey:MODELS];
    2. NSMutableString* detailText = [NSMutableString string];
    3. for(int i = 0; i < [modellDaten count]; i++)
    4. {
    5. [detailText addString:[[modellDaten objectAtIndex:i] objectForKey:MODELLNAME];
    6. if(i+1 < [modellDaten count])
    7. {
    8. [detailText addString:@", "];
    9. }
    10. }
    11. cell.detailTextLabel.text = detailText;
    Alles anzeigen
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Lucas de Vil schrieb:

    Amin Negm-Awad schrieb:


    appendString:

    Da hat er Recht, das wars.

    Keine Ahnung, hatte mir die Source nicht näer angeschaut. Aber -addString: klingt halt so wie -appendString:. Da konnte man aber auch in der recht übersichtlichen Doku zu NSMutableString selbst finden.

    Nur noch ein kleiner Hinwies von untergeordneter Bedeutung. Die Abfrage für das Komma geht auch etwas einfacher:

    Quellcode

    1. NSArray *modellDaten = [[autoArray objectAtIndex:indexPath.row] objectForKey:MODELS];
    2. NSMutableString* detailText = [NSMutableString string];
    3. for(int i = 0; i < [modellDaten count]; i++)
    4. {
    5. if( i ) {
    6. [detailText appendString:@", "];
    7. }
    8. [detailText appendString:[[modellDaten objectAtIndex:i] objectForKey:MODELLNAME];
    9. }
    10. cell.detailTextLabel.text = detailText;
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?