2016-07-14 29 views
0

ich habe folgende Prädikate ein:NSFetchedResultController nicht Änderung Objekt finden Sie unter „zwei Beziehungen“ weg

fetchRequest.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ 
    NSPredicate(format: "start >= %@", NSDate.init(timeIntervalSinceNow: 0).dateByRemovingTime()), 
    NSPredicate(format: "product.filter.enabled == %@", true) 
]) 

Die Einheit für die Abrufanforderung ist ein Activity, die dann ein Produkt enthält. Jedes Produkt hat dann einen Filter, der entweder aktiviert oder deaktiviert ist.

Sollte es erneut geladen werden, wenn der boolesche Wert enabled geändert wird?

Wenn nicht: Wie kann ich es auslösen? Mit willChangeValueForKey und didChangeValueForKey bei Änderung enabled?

+0

Haben Sie nach Duplikaten gesucht? Es gibt viele – Wain

+0

[this] (http://stackoverflow.com/q/7533849/2446155), [dies] (http://stackoverflow.com/q/4010334/2446155), und [dies] (http://stackoverflow.com/a/12379824/2446155) –

Antwort

0

NSFetchedResultController ist ein KVO-Controller, der nur überwachen kann, ob Daten in den Controller geladen oder nach dem Abrufen des Controllers eingefügt wurden. Wenn Sie die Daten aktualisieren, die nicht in der Steuerung vorhanden sind, oder die Beziehungsdaten der Daten aktualisieren, ruft die Steuerung den Delegierten oder KVO nicht auf. Es gibt einen Weg, um das Problem zu speichern: 1. Sie können ein BOOL-Attribut zum Beispiel "hasChanged" in der Entität hinzufügen, wenn die Beziehungsdaten geändert wurden, dann ändern Sie "hasChanged". 2. Sie können eine KVO für die Beziehungsdaten hinzufügen