Core Data NSFetchedResultsController wird nach einem batchUpadate auf dem Gerät nicht aktualisiert, aber im Simulator in Ordnung

8

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:

%Vor%

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:

%Vor%

Ich habe einige Methoden des Delegaten NSFetchedResultsControllerDelegate implementiert, um Änderungen in den Ergebnissen zu verwalten, die von NSFetchedResultsController :

gesendet wurden %Vor%

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.

    
Nico 25.08.2015, 05:08
quelle

1 Antwort

3

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. :)

    
J-Boss 04.09.2015, 13:36
quelle