Entity auf update überprüfen

  • Entity auf update überprüfen

    Hallo,

    für mein Programm benötige ich eine Funktionalität, die mir mitteilt, dass eine bestimmte Entität entweder erstellt, gelöscht oder eine bestehende geupdatet wurde.
    Allerdings brauche ich diese Information nicht für eine konkrete Instanz sondern für alle Instanzen der zugehörigen Entität.

    Ich konnte es bereits realisieren, indem ich dem managedObjectContext einen Observer angehängt habe und jegliche seiner Änderungen abfrage.
    Schön und gut...

    Gibts für dieses Problem aber keine eingebaute Funktionalität via KVO etc.? Denn so habe ich für alle Änderungen im moc eine Notification, aus der ich auslesen muss, ob die gesuchte Entität verändert wurde. Das ist bei vielen Daten wahrscheinlich wenig performant.
  • Genau dafür ist die MOC-Notofication gedacht. Das Auseinanderdröseln ist custom-Code und genau Deine Aufgabe. Mach Dir über Performance keine Gedanken, schon gar nicht am Anfang des Projektes und ohne konkrete Messung. Der vom Framework bereitgestellte Weg dürfte ohnehin der effizienteste sein. Also, benutze einfach den vorgesehen Weg und mach Dir keine Gedanken.
  • chrizke schrieb:

    Hallo,

    für mein Programm benötige ich eine Funktionalität, die mir mitteilt, dass eine bestimmte Entität entweder erstellt, gelöscht oder eine bestehende geupdatet wurde.
    Allerdings brauche ich diese Information nicht für eine konkrete Instanz sondern für alle Instanzen der zugehörigen Entität.

    Ich konnte es bereits realisieren, indem ich dem managedObjectContext einen Observer angehängt habe und jegliche seiner Änderungen abfrage.
    Schön und gut...

    Gibts für dieses Problem aber keine eingebaute Funktionalität via KVO etc.? Denn so habe ich für alle Änderungen im moc eine Notification, aus der ich auslesen muss, ob die gesuchte Entität verändert wurde. Das ist bei vielen Daten wahrscheinlich wenig performant.

    KVO steht für Key-Value-Observing. Man kann damit also den Wert einer (observierbaren) Eigenschaft observieren. Welche Eigenschaft des Kontextes sollte das denn sein? Übrig blebt nur registeredObjects und da ist die Dokumentation ziemlich eindeutig: "A managed object context does not post key-value observing notifications when the return value of registeredObjects changes."

    Daher bleibt nur der Notification-Mechanismus.

    Für Updates einer einzelnen Entität (also einer Instanz) kannst du freilich selbst observieren, wenn du lustig bist. Dürfte sich aber kaum lohnen.
    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"?