Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: OS X Entwicklerforum. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

1

Mittwoch, 25. April 2012, 20:50

CoreData, NSFetchedResultsController und Überwachung von Änderungen der Property einer per Relaitionship verknüpften Entität.

Puh, komplizierter Titel. ;)
Ich versuch es mal etwas verständlicher:

Ich habe eine Art Ordnerstruktur.
Eine TableView zeigt die "Ordner", eine andere die Unterobjekte welche alle einen neu/ungelesen Flag (NSNumber/numberWithBool)haben.
Die Ordner-TableCells haben nun ein Label, welches die Anzahl ungelesener Unterobjekte zeigt (Ähnlich der Mail App).

Das Problem ist nun, der Ordner hat selbst keine Property "AnzahlUngelesenerSubObjekte", da ich eigentlich vermeiden wollte solch einen Wert zusätzlich zu speichern wenn er sich mit einem fetchRequest leicht abfragen lässt.
(Zudem muss man nicht darauf achten diese zusätzliche Property bei der Änderung der Subobjekte immer aktuell zu halten.)

Dadurch updated der NSFetchedResultsController aber nicht automatisch die UI wenn man ein Sub-Objekt als gelesen markiert.
Er überwacht ja nur die FolderObjekte, nicht die Properties der SubObjekte.

Gibt es eine Lösung wie der NSFetchedResultsController das doch mitbekommt?
Werden zum Beispiel Klasseneigenschaften überwacht?
Dann könnte ich dem Folder ja eine property "unreadCount" verpassen welche dann nicht in CoreData gespeichert wird, mit einem Getter der eben die unread Subobjects fetched.


Alternativ könnte ich natürlich vom zweiten SubObjekte-ViewContoller die Information über die Änderung zum RootViewController zurück übergeben und von dort dann an den Folder-ViewController weiter.
Oder eine Notification abschicken, dass der Unread-Count des Folders, welches gerade vom SubObjekte-ViewController angezeigt wird sich geändert hat.
Aber ich fände es Sauberer wenn die gesamte Datenverwaltung in der UI beim NSFetchedResultsController bleiben würde.

2

Mittwoch, 9. Mai 2012, 09:51

Ich habe jetzt keine konkrete Lösung für dich, aber einen (wie ich finde) guten Denkanstoß. Es ist richtig, dass du keine Daten speichern willst, die du auch anderweitig ermitteln kannst. Füge doch dem Ordner ein transientes Attribut hinzu. Somit speicherst du nur die relevanten Daten und hast trotzdem ein Attribut an der Hand. Achte darauf, dass du dafür sorgst, das wenn ein Element als gelsen markiert wird, dass du die Änderung an den Ordner weitergibst.

Social Bookmarks