1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Core Data Problem - add a Person to Event

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Modern Geek, 01.02.10.

  1. Modern Geek

    Modern Geek Ontario

    Dabei seit:
    14.10.09
    Beiträge:
    348
    Hey,

    ich habe noch nie mit Core Data gearbeitet und bin nun an ein Problem gestoßen das ich durch intensives googlen leider nicht loesen konnte.

    Ich habe 3 Entities - Event, Person, Game - Es sind alles to-Many Relations. Nun wuerde ich gerne vorher erstellte Personen bzw. Games einem Event hinzufuegen. Ich habe die -(void)addPersonObject:(Person *)value Methoden schon erstellt, jedoch weiß ich nicht wie ich darauf zugreifen kann. Es ist wohl eine Kleinigkeit, nur ich komme gerade nicht drauf.

    Das Interface sieht wie folgt aus
    [​IMG]

    Wenn ein Event angeklickt ist soll es moeglich sein ueber den + Button ein makierter Spieler bzw. Spiel hinzufuegen.

    Die hinzugefuegten lasse ich temporaer in einer Tabelle anzeigen, die gerade nicht im Bild ist.
     
  2. Modern Geek

    Modern Geek Ontario

    Dabei seit:
    14.10.09
    Beiträge:
    348
    Schade kann mir hier niemand helfen? Below, MacApple etc.?
     
  3. sumpfmonsterjunior

    sumpfmonsterjunior Morgenduft

    Dabei seit:
    17.03.05
    Beiträge:
    167
    Hi,

    wenn Du die Entities abgeleitet hast (via den Assistenten von Xcode), dann solltest Accessoren haben, um neue Objekte den jeweiligen to-many-relationships hinzuzufügen.

    Einfacher geht es mit ArrayController. Richte einen ein, der Dir Deine events verwaltet. Dann einen weiteren für neue Personen. Dessen contentSet-Binding bindest Du an die selection.persons des events-Controllers (falls die Person-to-many-relationship Deiner event entity persons heisst).

    Dann verbindest Du die add/remove buttons mit den action-methods des PersonArrayControllers und é voila: neue Personen werden dem jeweils ausgewählten event hinzugefügt.

    Gruß, SMJ

    Ach ja, lies Dir das durch.
     
  4. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Dein Modell ist mir nicht ganz klar. "Alles to-many relations" ist recht allgemein. Ich gehe jetzt mal davon aus, dass ein Event jeweils eine to-many relation zu Person und Game hat. Wenn Du nun eine Person einem Event hinzufügen willst, dann geht das in Core Data folgendermaßen:
    Code:
    // 'event' sei der Event
    // 'persons' sei die sei die to-many relation für die Spieler eines Events
    // 'person' sei der ausgewählte Spieler
    [[event mutableSetValueForKey:@"persons"] addObject:person];
    // oder
    [event addPersonsObject:person];
    MacApple
     
  5. Modern Geek

    Modern Geek Ontario

    Dabei seit:
    14.10.09
    Beiträge:
    348
    Ich war mir bei der Modellierung nicht ganz sicher. Ich moechte die gleiche Person auch oefters einem Event hinzufuegen, da war ich mir nicht sicher ob ich eine to-many or to-one Beziehung von person to event brauche. Ich habe es nun erstmal auf "to-many" gemacht und wenn ich es nicht brauche wollte ich das wieder aendern.

    Dieses Code Beispiel ist mir klar und habe meine Frage glaub ich falsch formuliert. Es geht mir eher darum, wie ich genau sagen kann das event gleich dem selektierten Event ist und das der Spieler gleich dem selektierten Spieler ist. Schuldige!
     
    #5 Modern Geek, 02.02.10
    Zuletzt bearbeitet: 02.02.10
  6. sumpfmonsterjunior

    sumpfmonsterjunior Morgenduft

    Dabei seit:
    17.03.05
    Beiträge:
    167
    Das machst Du über NSArrayController, der kümmert sich auch um die Selektion.
     
  7. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Finde ich ein wenig komisch. Eine Person kann doch nur einmal an einem Event teilnehmen.

    Beziehungen werden in Core Data ja mit NSSet realisiert. Das bedeutet, Du kannst eine Person gar nicht mehrfach zuordnen.

    Nun, Du füllst ja Deine Tabellen aus einer Datenquelle. Dann kannst Du auch das jeweils selektierte Objekt abfragen. Wo hängt davon ab, wie Du die Tabellen mit Daten versorgst.

    MacApple
     
  8. Modern Geek

    Modern Geek Ontario

    Dabei seit:
    14.10.09
    Beiträge:
    348
    Dann erklaere ich erstmal allgemein das Projekt! Also es geht um ein Kegelverein. Wir wollen unsere Statistik verwalten.
    Ein Event hat somit viele Spieler und Spiele das ist klar, aber eine Person hat auch an vielen Events teilgenommen und genauso kann auch ein Spiel an mehreren Events gespielt worden sein.
    Muss ich dafuer vielleicht noch eine weitere Entity hinzufuegen z.b. EventData?
    Ich muss im Event einem Spiel die Personen zuweisen die am Event teilnehmen und sagen koennen, diese Person musste in diesem Spiel z.b. 0,50€ bezahlen. Das muss ich fuer jedes Event/Spiel machen koennen.

    Spaeter moechte ich eine 3 Views haben (Person - Game - Event). In der Person View soll dann angezeigt werden wieviel die Person schon ingesamt gezahlt hat, wie oft er in die Kalle geworfen hat etc. Genau das gleiche dann mit der GameView nur natuerlich mit den Game Attributes. Daher das dies so eine SternModellierung ist tue ich mich mit dem Model sehr schwer. Nehme da jede Hilfe gerne an.
     
  9. Modern Geek

    Modern Geek Ontario

    Dabei seit:
    14.10.09
    Beiträge:
    348
    So ich habe mich eben mit einem Kommilitonen hingesetzt und wir haben folgendes Model erstellt.

    [​IMG]

    Unserer Meinung nach sollte damit alles moeglich sein und ist auch nicht eure Aufgabe das zu pruefen, werde nur damit nun erstmal weiter arbeiten. Ich werde nun auch erstmal etwas weiter rumprobieren. Dank erstmal.
     

Diese Seite empfehlen