• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Core Data Problem - add a Person to Event

Modern Geek

Ontario
Registriert
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
Kegeln-20100201-184547.png


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.
 

sumpfmonsterjunior

Morgenduft
Registriert
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.
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
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
 

Modern Geek

Ontario
Registriert
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!
 
Zuletzt bearbeitet:

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Ich war mir bei der Modellierung nicht ganz sicher. Ich moechte die gleiche Person auch oefters einem Event hinzufuegen
Finde ich ein wenig komisch. Eine Person kann doch nur einmal an einem Event teilnehmen.

da war ich mir nicht sicher ob ich eine to-many or to-one Beziehung von person to event brauche.
Beziehungen werden in Core Data ja mit NSSet realisiert. Das bedeutet, Du kannst eine Person gar nicht mehrfach zuordnen.

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!
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
 

Modern Geek

Ontario
Registriert
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.
 

Modern Geek

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

MyDocument.xcdatamodel_-_Kegeln-20100202-170849.png


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.