Was ist der effizienteste Weg, um den Wert aller oder einiger verwalteter Objekte in Core Data in Objective-C zu aktualisieren?

7

Ich habe gegoogelt und recherchiert, bin aber nicht in der Lage, den besten Weg zu finden, alle oder einige verwaltete Objekte in meinem Datenmodell zu durchlaufen und einen Attributwert in jedem von ihnen zu aktualisieren, in meiner Situation auf das aktuelle Datum zu aktualisieren. Die Delegiertenmethoden für den verwalteten Objektkontext und den persistenten Speicher befinden sich alle in meinem Anwendungsdelegaten. Ich könnte etwas Code in einer Tabellenansicht im Programm hinzufügen, aber ich denke, es wäre effizienter, Methoden aufzurufen, um diese Werte zu aktualisieren, da sie nicht unbedingt zur Tabellenansicht zurückkehren.

Letztendlich möchte ich meine verwalteten Objekte durchlaufen und Werte aktualisieren, während ich die Schleife durchführe, von überall in meiner Anwendung.

Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. Danke!

-Coy

    
Coy 19.10.2010, 20:30
quelle

3 Antworten

11

Je nachdem, auf was Sie die Werte aktualisieren möchten, können Sie ein Array von Objekten abrufen und setValue: forKey: auf dem Array aufrufen, wodurch der Wert für jedes Objekt im Array festgelegt wird. z.B.:

%Vor%

Das Einrichten der Abrufanforderung sollte nur die gewünschte Entität erfordern, lassen Sie das Prädikat nil, damit Sie alle Instanzen zurückbekommen.

    
ImHuntingWabbits 20.10.2010, 07:55
quelle
4

Die einzige Möglichkeit, mehrere Objekte zu aktualisieren, besteht darin, alle diese Objekte zu haben. Es gibt keine Möglichkeit, eine Stapelaktualisierung mit Core Data durchzuführen, wie Sie es in SQL können, da Core Data keine Datenbank ist . Es ist ein Objekt Graph Persistenz Framework, was bedeutet, dass Sie mit Objekten umgehen werden.

Es gibt Tricks, mit denen Sie Ihre Speicherauslastung gering halten können (z. B. das Stapeln Ihrer Abrufanforderung und das Abrufen bestimmter Eigenschaften), aber letztendlich verwenden Sie eine Schleife und aktualisieren die Objekte einzeln.

>     
Dave DeLong 19.10.2010 20:44
quelle
4

Ab iOS 8 und OS X 10.10 (Yosemite) hat Apple eine neue Klasse in Core Data hinzugefügt, um Batch-Updates durchzuführen: NSBatchUpdateRequest . Es ist wesentlich effizienter als die Lösung mit NSFetchRequest , insbesondere bei großen Datenmengen. Hier ist ein einfaches Beispiel:

%Vor%

Und hier ist ein guter Blogbeitrag zum Thema: Ссылка .

    
newenglander 03.06.2016 10:38
quelle