2016-05-20 5 views
0

Ich entwickle eine App in Swift, die JSON-Datensätze aus der API holt, in NSArray konvertiert und in UITableView neu lädt. Ich muss das NSArray mit CoreData abbilden, und wenn ich eine neue Anfrage an die API stelle, wenn in der JSON-Antwort ein neues Kind hinzugefügt wird, muss ich nur dieses Kind in CoreData speichern. I.E. Ich muss die Wiederholung von Werten von NSArray in CoreData vermeiden.Swift: Wie vermeidet man doppelte Einträge in CoreData für die Implementierung mit JSON-Array?

Ich fand einige Lösung als "mit eindeutigen Einschränkung für Datenmodelle" und "HyperSync und DATAStack", aber ich bin nicht in der Lage, dies zu tun. Muss ich ein Modul implementieren, um alle Datensätze zu überprüfen?

Antwort

1

Wenn Ihre Objekte in JSON eine Kennung haben, z. [ { "id" : 4, ...} ...], dann sollten Sie diese "id" -Werte in Ihren CoreData-Objekten speichern und versuchen, bereits vorhandene während des Mappings abzurufen, bevor Sie neue erstellen.

Wenn in JSON-Objekten keine Identifikation oder eindeutige Felder vorhanden sind, kann Ihre Aufgabe nicht aufgelöst werden.

z. RestKit Framework macht das alles automatisch für Sie, Sie müssen nur Mapping und identificationAttributes konfigurieren.

+0

Ich möchte es ohne Pod-Installation tun. Wie Sie erwähnt haben, muss ich nur einen vorhandenen holen, wie kann ich es tun. Und kannst du mir ein gutes Tutorial für RESTKit vorschlagen? Vielen Dank. –

+0

RestKit ist Pod, hier gibt es ein einfaches Beispiel: https://github.com/RestKit/RestKit – DisableR

+0

Wenn Sie es selbst machen wollen, und Sie eine eindeutige Identifikation von JSON-Objekten haben, dann können Sie dieses Attribut in einigen speichern "externalId" Eigenschaft Ihres ManagedObject. Bevor Sie ein neues Objekt erstellen, holen Sie das vorhandene Objekt nach der Bedingung "externalId =% @", objectJson [@ "id"]. Wenn keine Objekte vorhanden sind, erstellen Sie eine neue, andernfalls aktualisieren Sie die vorhandene. – DisableR

Verwandte Themen