Ist es möglich, einen Rückruf oder eine Benachrichtigung in der übergeordneten Entität zu erhalten, wenn sich ein Beziehungsobjekt ändert? Dies funktioniert hervorragend, wenn sich ein Attribut der Entity ändert. Die folgende Methode ...
- (void)didChangeValueForKey:(NSString *)key
wird in meiner Entity-Unterklasse aufgerufen. Diese Methode wird jedoch nicht aufgerufen, wenn sich ein Attribut in einer der Beziehungen ändert.
Ich versuche das timeStamp-Attribut in meiner übergeordneten Entität zu aktualisieren, wenn sich eines seiner Attribute oder Beziehungsobjekte ändert.
Die übergeordnete Entität kann sich selbst als Beobachter der Beziehung festlegen und wird benachrichtigt, wenn sich diese Beziehung ändert. Dies wird jedoch nur ausgelöst, wenn die tatsächliche Beziehung (Hinzufügen oder Entfernen eines untergeordneten Elements) auftritt.
Es ist viel schwieriger, nach einer bestimmten untergeordneten Entität zu suchen. Es gibt ein paar Möglichkeiten:
NSManagedObjectContextDidSaveNotification
zuhören und nachsehen, ob sich eines seiner Kinder in diesem Speicher befindet Es kann andere Lösungen geben, aber von den drei empfehle ich # 2. Es ist ziemlich einfach einzurichten und der Leistungseinfluss ist ziemlich minimal.
In der anderen Antwort fand ich 1,2 und 3 zu ineffizient. Vor allem 2 und das Beispiel im "Parent Watching it's Child" -Blogbeitrag. Mein Problem damit ist, dass jeder einzelne Elternteil auf die Kontextbenachrichtigung und im Wesentlichen jedes Objekt, das gespeichert wird, reagieren muss, wenn es das Kind ist (ungeachtet der Tatsache, dass ContextDidSave in diesem Fall besser geeignet ist!). Stattdessen würde ich eine Option 4 vorschlagen:
Meine Lösung ist effizienter und fühlt sich objektorientierter an, da das Objekt, das sich verändert, auf seine eigenen Veränderungen reagiert. Um dies zu implementieren, verwenden Sie innerhalb des untergeordneten Objekts:
%Vor%Um den übergeordneten Zeitstempel zu aktualisieren, verwenden Sie die folgende übersichtliche Lösung ( vorletzter Beitrag ), die ich benutze, könnte helfen, zB in der Elternverwendung:
%Vor%Tags und Links ios core-data entity-relationship