Ich habe eine NSFetchedResultsController
, die meine UITableView
Datenquelle verwaltet hat.
Ich versuche eine Eigenschaft eines NSManagedObject
namens amountToCompute
mit einem NSBatchUpdateRequest
zu ändern. Also erstelle ich die Batch-Aktualisierung:
Ich führe es aus:
%Vor% Um meinen aktuellen verwalteten Kontext zu aktualisieren, aktualisiere ich jedes managedObject im managedContext und führe einen neuen Abruf von fetchedResultsController
durch:
Ich habe einige Methoden des Delegaten NSFetchedResultsControllerDelegate
implementiert, um Änderungen in den Ergebnissen zu verwalten, die von NSFetchedResultsController
:
Ich starte die App auf meinem 8.4 iOS Simulator und alles geht gut.
println("update : \(myManagedObject.amountToCompute)")
gibt den neuen Wert aus.
Ich starte die App auf meinem iPhone 6 8.4.1 und der Wert wird nicht aktualisiert, println("update : \(myManagedObject.amountToCompute)")
gibt den alten Wert aus. Der neue Wert wird ordnungsgemäß gespeichert, aber die Änderungen erscheinen nicht in meiner Tabellenansicht, während sie im Simulator ausgeführt werden.
Was ist los? Wie kann es anders sein, ob ich auf dem Simulator oder auf meinem Gerät bin. Die Versionen sind nicht genau die gleichen, aber ich bezweifle, dass Apple Core Data Architecture in ihrem letzten Update berührt.
Dies ist ein ungewöhnliches, aber bekanntes Problem, dass ich in mich hineingerannt bin und ein paar Tage damit verbracht habe, mir die Haare auszuziehen, bis ich diesen Blogpost gefunden habe, der für mich funktioniert hat.
Es ging darum, diese einzelne Codezeile hinzuzufügen, die das Stalenness-Intervall auf Null gesetzt hat:
[Kontext setStalenessInterval: 0];
Wenn ich Ihren Beitrag richtig lese, haben Sie das gleiche Problem. :)
Tags und Links ios core-data swift nsfetchedresultscontroller