Mehrdimensionales Array einer Klasse max.3 Ebenen

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

  • Mehrdimensionales Array einer Klasse max.3 Ebenen

    Hallo zusammen,

    ich möchte gerne eine XML Datei verarbeiten...diese kann bis zu 3 ebenen bzw. Knoten haben.

    Eine Ebene möchte ich dann als UITableView anzeigen und diese aufeinander aufgebaut durch gehen...
    Jetzt kenn ich das noch aus Java das ich aus einer Klasse auch ein Mehrdimensionales Array basteln kann...

    Ich möchte also z.B. Vorname, Nachname und Alter für jede ebene speichern.
    Das Array sollte dann also ein Array von meiner Klasse Person sein...

    Wie bekomme ich das für`s iPhone hin??
    Gruß
  • Für mehrdimensionale Arrays gibt's verschiedene Wege:

    - Arrays in Arrays packen (Java tut das gleiche, nur syntaktisch etwas kürzer)
    - Ein eindimensionales Array nehmen und den Index mit Multiplikation und Modulo bestimmen (geht nur, wenn die Dimensionen feststehen)
    - Ein Dictionary mit einem dreidimensionalen Key-Objekt verwenden (sinnvoll für dünn besetzte Felder)

    Es gibt bestimmt weitere. Was Du nimmst, hängt von Deinen Daten und Deinen Anforderungen ab. Ich habe Deine Problematik nicht ganz verstanden, aber für mich klingt es eher so, als ob sich die Problematik von alleine erledigt, wenn Du Dein Modell sauber objektorientiert abbildest.
    Multigrad - 360°-Produktfotografie für den Mac
  • Ja stimmt ich hätte es wohl noch ein wenig besser beschreiben sollen:

    Beispiel
    UITableView1 zeigt Vornamen, Nachnamen, Anzahl Kinder an

    UITableView2 zeigt die Kinder von UITableView1 mit Vorname, Nachname, Anzahl Kinder

    UITableView3 zeigt die Kinder von UITableView2 mit Vorname, Nachname an.

    und diese ganzen Daten möchte ich gerne in einem Array speichern und jedem UITableView weiter geben.
  • Jetzt gibt's zwei Fälle: entweder sind die Entitäten in Tabelle 1,2 und 3 grundsätzlich unterschiedlich - dann hast Du drei Model-Klassen (also Z.B. Großeltern, Eltern, Kinder), die ersten beiden einem eindimensionalen Kinder-Attribut. Oder die Entitäten sind grundsätzlich gleich. Dann hast Du eine Menge Personen mit 1:n Kinder-Relation. In dem Fall ist es die Aufgabe der Data Source, die jeweiligen Daten herauszufummeln.In keinem der beiden Fälle brauchst Du ein dreidimensionales Array.
    Multigrad - 360°-Produktfotografie für den Mac
  • Also sauber wäre das nur zu lösen wenn Du in jeder Klasse eine Liste "Childs" hättest. Aber wenn Du es unbedingt quick und dirty machen willst, dann gib Deiner Klasse drei weitere Parameter

    UniqueID
    Parent

    Ist Parent == 0 dann ist es ein Object der ersten Taleview. Ansonsten steht im Parent die Unique ID des übergeordneten Eintrags. Beim Anklicken eines Objektes gibst Du dem neuen Tableview die UniqueID mit und schon kannst Du nur die Kinder raussuchen die diese UniqueID als Parent haben. etc. Beim parsen der Liste must Du dann halt nur die Einträge beachten deren Parent gleich der aktuellen UniqueID ist.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Markus Müller schrieb:

    Für sowas ist CoreData da! Es sei denn, Du hast zuviel Zeit...


    Naja, also um sich in Coredata einzuarbeiten braucht man zuviel Zeit :)

    Coredata mag ja genial sein, aber um es zu verstehen braucht man Tage wenn nicht gar Wochen... Ich habe eine App damit gemacht und gekotzt bis es einigermassen lief. Nicht umsonst gibt es hier unendliche Themen dazu. Mitlerweile nehm ich lieber wieder sqlite und mach das drum herum selber. Coredata ist ein riesen Paket und solange man nur 1% seiner Möglichkeiten nutzt sollte man die Finger davon lassen finde ich.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Klar braucht es etwas Einarbeitungszeit, aber einmal verstanden, sparst Du jede Menge Zeit&Mühen.
    Auf jeden Fall mehr, als jedes Mal die ganze Objektgraphinfrastruktur selbst zu stricken.
    Langfristig zahlt sich das auf jeden Fall aus. Und dass es hier zig Themen dazu gibt, liegt meiner Meinung nach eher daran, dass meistens die Grundlagen fehlen und die Doku ignoriert wird - aber das ist ein anderes Thema...
  • Hallo,

    erstmal vielen Dank für die Antworten...

    Also gedacht hatte ich mir das, dass die Entitäten grundsätzlich gleich sind. Also eine Klasse Person mit Vorname, Nachname, Anzahl Kinder würde mir reichen..

    Hätte den jemand mal ein gutes Beispiel für ein solches Array??
    Danke
  • macmoonshine schrieb:

    Thallius schrieb:

    Also sauber wäre das nur zu lösen wenn Du in jeder Klasse eine Liste "Childs" hättest.
    Nein, das ist absolut unsauber...

    Der Plural von child ist children ;) +scnr+


    Du bist kein echter Programmierer wenn du freiwillig mehr Buchstaben schreibst als zur eindeutigen Verständlichkeit notwendig :D

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    Du bist kein echter Programmierer wenn du freiwillig mehr Buchstaben schreibst als zur eindeutigen Verständlichkeit notwendig

    Da fehlt das C- vor dem Wort Programmierer. Früher fand ich auch mal unverständlichen Programmcode voller einbuchstabiger Variablen gut.

    Programmieren kann jeder Trottel. So zu Programmieren, dass Andere es verstehen, ist die Kunst.
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Thallius schrieb:

    Du bist kein echter Programmierer wenn du freiwillig mehr Buchstaben schreibst als zur eindeutigen Verständlichkeit notwendig

    Da fehlt das C- vor dem Wort Programmierer. Früher fand ich auch mal unverständlichen Programmcode voller einbuchstabiger Variablen gut.

    Programmieren kann jeder Trottel. So zu Programmieren, dass Andere es verstehen, ist die Kunst.


    Mh, wiso interpretierst Du meine Aussage jetzt so ? Ich meine "eindeutige Verständlichkeit" impliziert ja wohl das ich keine Variablen nehme die nur einen Buchstaben lang sind. Aber ob ich Children oder Childs schreibe ist ziemlich egal, da beides ganz klar verdeutlicht wozu es gut ist, oder ?

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Lucifus schrieb:

    mmhh ja also meine Herren diese ganze Diskussion hilft mir mal grad gar nicht...

    Hat denn niemand ein guten Beispiel-Code?


    du hast keine ahnung oder?

    Quellcode

    1. @interface Person
    2. {
    3. NSString *_forename;
    4. NSString *_surname;
    5. NSMutableArray *_children;
    6. }
    7. + (Person *)personWithForename:(NSString *)forename surname:(NSString *)surname children:(NSArray *)children;
    8. - (NSString *)forename;
    9. - (NSString *)surname;
    10. - (NSArray *)children;
    11. @end;
    Alles anzeigen