8 Stimmen

Muster für den Zugriff auf entfernte Daten mit Core Data?

Ich versuche, eine Core Data-Anwendung für das iPhone zu schreiben, die eine externe Datenquelle verwendet. Ich verwende Core Data nicht wirklich, um meine Objekte zu persistieren, sondern eher für die Verwaltung des Lebenszyklus von Objekten. Ich habe eine ziemlich gute Vorstellung davon, wie ich Core Data für lokale Daten verwenden kann, bin aber auf ein paar Probleme mit externen Daten gestoßen. Ich werde einfach die API von Flickr als Beispiel verwenden.

Wenn ich beispielsweise eine Liste der neuesten Fotos benötige, muss ich sie aus einer externen Datenquelle abrufen. Nachdem ich die Liste abgerufen habe, sollte ich iterieren und verwaltete Objekte für jedes Foto erstellen. An diesem Punkt kann ich in meinem Code fortfahren und die standardmäßige Kerndaten-API verwenden, um eine Abrufanforderung einzurichten und eine Teilmenge von Fotos, z. B. über Hunde, abzurufen.

Was aber, wenn ich dann fortfahren und eine Liste der Fotos des Benutzers abrufen möchte? Da die Möglichkeit besteht, dass sich diese beiden Datensätze überschneiden, muss ich dann eine Abrufanforderung für die vorhandenen Daten durchführen, die bereits vorhandenen Daten aktualisieren und dann die neuen Objekte einfügen?

--

Bei dem älteren Muster würde ich einfach separate Datenstrukturen für jeden dieser Datensätze haben und entsprechend auf sie zugreifen. Ein Satz recentPhotos und ein Satz usersPhotos. Da das allgemeine Muster von Core Data jedoch darin zu bestehen scheint, einen verwalteten Objektkontext zu verwenden, scheint es (ich könnte mich irren), dass ich meine Daten mit dem Hauptdatenpool zusammenführen muss. Aber das scheint eine Menge Overhead zu sein, nur um eine Liste von Fotos abzurufen. Sollte ich einen separaten verwalteten Objektkontext für den anderen Satz erstellen? Sollte Core Data hier überhaupt verwendet werden?

Was mich an Core Data reizt, ist die Tatsache, dass ich früher (für einen Webdienst) eine Anfrage nach bestimmten Daten stellen und sie entweder in der Anfrage filtern oder im Code filtern und eine Liste erstellen musste, die ich verwenden konnte. Mit Core Data kann ich einfach eine Liste von Objekten abrufen, sie zu meinem Pool hinzufügen (wobei ich alte Objekte bei Bedarf aktualisiere) und dann eine Abfrage stellen. Ein Problem, das ich bei diesem Ansatz sehe, ist jedoch, dass ich nicht wissen kann, wenn Objekte von außen gelöscht werden, da ich meine alten Daten behalte.

Liege ich hier völlig falsch? Gibt es irgendwelche Muster für den Umgang mit Ferndaten und Kerndaten, denen man folgt? :) Ich habe ein paar Beiträge von Leuten gefunden, die sagen, dass sie es getan haben und dass es für sie funktioniert, aber kaum Beispiele. Danke!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X