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

Zwei TableView mit CoreData befüllen?

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Wikinator, 24.08.06.

  1. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    21.08.04
    Beiträge:
    1.297
    Hallo,

    ich habe 2 TableViews und 2 ArrayController. Diese sind mit 2 Entities "A" und "B" verbunden. Die TableView mit Entity A ist nun die Haupt-TableView, sprich der erste Eintrag in dieser TableView hat mehrere Einträge in der zweiten, die selber auch jeweils Einträge für Textfelder haben.
    Wie muss ich nun die beiden TableView in der GUI und die Entities im Modell verknüpfen, damit der erste Eintrag bei A seine Einträge bei B hat etc.?
     
  2. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    Bin mir nicht sicher, aber ich glaube hier wird das behandelt.

    Und das hier könnte auch hilfreich sein.

    Ich kann im Moment genauer nachschauen, aber werde mir die beiden Sachen bei gelgenheit nochmal anschauen und dann versuchen n Beispiel zu bauen.

    Aber ich bin ja noch CoreData-n00b

    Greetz,
    MatzeLoCal
     
  3. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    Hallo,

    ich habe Dir (und für die, die es interessiert) mal ein Beispielprojekt erstellt. Es ist, eine Art Offline Blog.. ich glaube das Standardbeispiel unserer Tage :)

    Hier kannst Du es laden. (1.7MB/128kbit Upstream)

    Ok.. was ist zu tun:

    Der Array (bei mir post), der auf das ausgewählte in dem anderen Array (bei mir author) reagieren soll muss in den Bindings bei "contentSet", den anderen ArrayController und "selection" gesetzt haben (siehe anghängtes Bild) und als "Model Key Path" das Relationship gesetzt haben.


    ich hoffe das hilft und kommt nicht zu spät.
     

    Anhänge:

  4. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    21.08.04
    Beiträge:
    1.297
    wie soll ich dabei dann die TableViews mit Daten initiieren?
    Zum Beispiel: User klickt "+" und es soll ein neuer Eintrag in TableView A enstehen. Das mach ich dann so:
    Code:
    	NSEntityDescription *entityDescription = [[[appDelegate managedObjectModel] entitiesByName] valueForKey:@"EntyA"];
    	NSManagedObject *site = [[[NSManagedObject alloc] initWithEntity:entityDescription insertIntoManagedObjectContext:[appDelegate managedObjectContext]] autorelease];
    	[site setValue:@"Bla" forKey:@"title"];
    	[siteController addObject:site];*/
    Dann hat das site-Enty zwar ein Title-Objekt (einfacher NSString) aber wie befülle ich dann den Feed-Relationsship? Einfach ein (oder mehrere) neues NSManagedObject mit den entsprechenden Werten erstellen und forKey:mad:"feeds" hinzuzufügen funktioniert nicht.
     
  5. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    Ich kommt jetzt nicht so ganz mit... also das mit dem '+'-Button kannst Du ganz einfach im InterfaceBuilder realisieren. Einfach mit ctrl+gehaltener maustaste von dem '+'-Button auf den ArrayController und bei Target nimmst Du dann add:

    Aber vielleicht verstehe ich dich auch nur falsch.
     
  6. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    21.08.04
    Beiträge:
    1.297
    klar kann ich das so machen, allerdings will ich auf den Add-Prozess noch Zugriff haben um die Daten manuell zu erstellen. Nur wie erstelle ich die Daten für den Relationship auf B im Enty A?
     
  7. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    In dem Du das eine Object beim anderen einfügst....??
     
  8. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    21.08.04
    Beiträge:
    1.297
    ? Ich meine, in dem neu erstellten Objekt von A neue Objekte in B (zu A gehörend)
     
  9. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    Könntest Du mal dein DatenModel posten? Oder ist das vergleichbar mit dem aus dem Beispiel... dann versuche ich das am WE mal umzustricken... sofern ich die Zeit dazu finde.
     
  10. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    21.08.04
    Beiträge:
    1.297
    ok:
    Code:
    Haupt-Entry:
    author:
    [INDENT]name (String)
    posts (Relationship zu post)[/INDENT]
    
    post:
    [INDENT]title (String)
    text (String)[/INDENT]
    
    die TableView mit author ist links und beinhaltet alle Autoren. Beim +-Button wird dann eine Methode im Controller aufgerufen, die mittels NSManagedObject ein Objekt, mit irgendeinem Namen und posts=eine Suchfunktion (die ist nicht das Problem) mit alle dazugehoerigen Posts des Autors, zu der TableView hinzufuegt.

    Wie mache ich das nun mit dem hinzufuegen aller posts (die dann in de zweiten TableView angezeig werden)? (Ein Autor hat mehrere Posts, ein Post immer nur einen Autor, in diesem Fall ;))
     
  11. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    21.08.04
    Beiträge:
    1.297
    *hochschieb*
     
  12. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    Ungeduldiges Kind! :p

    TT2.

    Alles was du wissen willst ist in CHCXSingleController ...

    ... und bitte keine schimpfe über die hässlichkeit des Codes erstens Hab ich das "heimlich" gemacht, zweitens bin ich ja Cocoa/CoreData-Anfänger.
     
  13. Wikinator

    Wikinator Adams Parmäne

    Dabei seit:
    21.08.04
    Beiträge:
    1.297
    danke. Hat mir sehr geholfen. :)
     

Diese Seite empfehlen