Ich habe zwei Tabellen mit einer 1 : n Beziehung. Tabelle 1 ist vereinfach gesagt ein Begriff und Tabelle 2 ein Thema. Jeder Begriff ist einem Thema zugeordnet und jedes Thema kann entsprechend auf viele Begriffe verweisen. Die Models sehen dann vereinfach so aus:
Alles anzeigen
Die Tabelle 1 Begriff hat ein Attribut visible, nach welchen in in bestimmten Fällen selektieren möchte.
Mein Problem ist nun, sich im Model Thema das NSSet absolut nicht ändern will. Ich ändere den Wert visible für einige Objekte und speichere diese. Danach hole ich mir alle Themen über einen FetchRequest neu und trotzdem liefert mir meine visibleCount-Funktion die Anzahl der vorher sichtbaren Begriffe. Die Begriffe wurden jedoch richtig gespeichert, da nach einem Neustart der App alles richtig angezeigt wird.
Kann mir irgendwer auf die Sprünge helfen, wo ich das Problem suchen kann? Als Workaround habe ich jetzt folgende Methode implementiert, die aber natürlich deutlich langsamer ist:
Alles anzeigen
Die liefert mir immer den richtigen Wert aber sol will ich es eben nicht machen.
Quellcode
Die Tabelle 1 Begriff hat ein Attribut visible, nach welchen in in bestimmten Fällen selektieren möchte.
Mein Problem ist nun, sich im Model Thema das NSSet absolut nicht ändern will. Ich ändere den Wert visible für einige Objekte und speichere diese. Danach hole ich mir alle Themen über einen FetchRequest neu und trotzdem liefert mir meine visibleCount-Funktion die Anzahl der vorher sichtbaren Begriffe. Die Begriffe wurden jedoch richtig gespeichert, da nach einem Neustart der App alles richtig angezeigt wird.
Kann mir irgendwer auf die Sprünge helfen, wo ich das Problem suchen kann? Als Workaround habe ich jetzt folgende Methode implementiert, die aber natürlich deutlich langsamer ist:
Quellcode
- class Thema: NSManagedObject
- {
- …
- var _visibleCount: Int {
- var error: NSError? = nil
- let fetchRequest = NSFetchRequest(entityName: "Begriff")
- fetchRequest.resultType = .CountResultType
- fetchRequest.predicate = NSCompoundPredicate(type: .AndPredicateType, subpredicates: [
- NSPredicate(format: "visible == %@", true),
- NSPredicate(format: "thema == %@", self)
- ])
- if let result = self.managedObjectContext!.executeFetchRequest(fetchRequest, error: &error) as? [NSNumber]
- {
- return result[0].integerValue
- }
- return 0
- }
- }
So Long, and Thanks for All the Fish.