CoreData + ArrayController + abgeleitete Entitäten + selection

  • CoreData + ArrayController + abgeleitete Entitäten + selection

    Hallo,

    in der CoreData Dokumentation von Apple findet sich leider recht wenig zum Thema "abstrakte Entitäten" bzw. über das "Ableiten" einer Entität von einer "Elternentität". Zu der nun folgenden Frage wurde ich leider in der Dokumentation nicht fündig.

    Vorhanden: Eine Entität - Person - von der zwei Entitäten - Programmierer und Arbeiter - ableiten. In einer Nib sind drei ArrayController (für jede Entität einen), die entsprechend konfiguriert sind.

    Ein TableView ist wie folgt gebunden:
    content = Personen (ArrayController) (also an den Controller, der alle Personen verwaltet - Arbeiter und Programmierer)

    Eine Spalte des TableViews ist an das gemeinsame Attribut (das Attribut ist in der Personenentität definiert) "Vorname" (Typ: String) gebunden.

    Zusätzlich noch zwei Buttons.

    Siehe Screenshot.

    Der "Neuer Programmierer"-Button ist mit der add: Methode des Programmierer ArrayControllers verbunden - der "Neuer Arbeiter"-Button mit der add: Methode des Arbeiter ArrayControllers.

    Select Inserted Objects aller ArrayController ist angehakt.

    Neu hinzugefügte Programmierer/Arbeiter werden zwar unmittelbar in der TableView angezeigt (falls sie über die addMethode des entsprechenden ArrayControllers hinzugefügt werden) - allerdings werden sie nicht selektiert.

    Bug? Feature? Ich kanns mir nicht erklären. Der Personen ArrayController observiert im Falle von CoreData die Objekte "seiner" Entität. Da gehören abgeleitete Entitäten wohl nicht dazu.

    Mit insertObject:atArrangedObjectIndex: wird wie gewohnt selektiert.
    Die Objective-Cloud ist fertig wenn sie fertig ist. Beta heißt Beta.

    Objective-C und Cocoa Band 2: Fortgeschrittene
    Cocoa/Objective-C Seminare von [co coa:ding].
  • RE: CoreData + ArrayController + abgeleitete Entitäten + selection

    a)
    So recht ist mir der Sinn auch nie eingefallen und in der Tat ist die Doku dazu erstaunlich schweigsam … wie das Internet!

    b)
    Ich löse das allerdings anders: Die Buttons verweisen auf Methoden meines (Window-)controllers, hier also etwa -addProgrammer: und -addWorker:. Diese erzeugen dann eine Instanz der Subklasse Programmer : Person bzw. Worker : Person und fügen die dem Array-Controller hinzu.
    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"?