Frage

In meiner iPhone -App gebe ich den Benutzern einen Blick auf Branchennachrichten. Ich erhalte diese Liste als XML -Datei von meinem Server. Das Parsen und Einsetzen der XML -Daten in mein Kerndaten -Repository ist ein Kinderspiel, aber es gibt einige Fälle, in denen ich möglicherweise doppelte Nachrichteneinträge erhält.

Ich dachte, eine gute Lösung wäre, alle Updates beim Verarbeiten des XML -Feeds einzulegen und dann alle Duplikate zu entfernen. Aber ich kann nicht herausfinden, wie man Letzteres macht. Wie entfernt man doppelte Objekte im Kerndatenrahmen von Apple?

Um diesen Beton zu machen, sagen wir, ich habe einen Nachrichten:

Nachricht - UniqueId (vom externen System festgelegt) - Titel - NewStext

Gibt es eine prägnante Möglichkeit, Kerndaten zu untersuchen, nur doppelte Objekte zu löschen, bei denen ein doppeltes Objekt als Objekt mit demselben „UniqueID“ definiert wird? Dh, ohne einen expliziten Fetch in meinem Code zu machen und sicherzustellen, dass das Objekt nicht einfügt, wenn ein Objekt mit demselben „UniqueID“ bereits existiert?

War es hilfreich?

Lösung

Kerndaten unterstützen nicht das Löschen von "Duplikaten", da der einzige Begriff der Objektidentität das ist NSManagedObjectID jedem Objekt zugewiesen. Da Sie diese ID nicht manuell festlegen können, können Sie sie nicht für eindeutige Einsätze verwenden. Sie haben (mindestens) zwei Optionen:

  1. Führen Sie einen Einsatz auf, wie Sie vorschlagen. Das Testen zeigt, ob dies zu langsam ist: Bis Sie es testen, gehen Sie jedoch nicht davon aus, dass diese Lösung nicht funktioniert. Sie könnten die Leistung verbessern, indem Sie die gesamte Einfügung in eine durchführen NSInMemoryPersistentStore Anschließend migrieren Sie dieses persistente Geschäft in einen dauerhaften (On-Disk-) Geschäft, um sie zu sparen. Wenn Sie alle eingefügten Objekte im Speicher halten können, ist dies der Fall sehr schnell.

  2. Sie können alle Objekte einfügen, speichern, dann einen Abruf durchführen und alle bis auf eines der Objekte löschen. Auch dies kann leistungsfähiger sein als Sie vermuten.

In beiden Fällen ist die Codemenge minimal. Die Kerndateninstrumente in den Instrumenten. App ist Ihr bestes Instrument zur Beurteilung der Leistung beider Ansätze.

Andere Tipps

Wenn Sie ein Attribut, eindeutig, in Kerndaten eindeutig und nicht optional erstellen, kopiert es nicht das gleiche Element erneut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top