iOS9 Xcode 7 - Core Data - Vermeidung von doppelten Objekten

8

Wie in WWDC2015 Präsentationsvideo beschrieben, können wir es im neuen Xcode7 machen Setzen Sie die Objekteindeutigkeit direkt im Xcode Model Editor. Ich habe versucht, meinen Code zu implementieren, aber etwas funktioniert nicht wie erwartet. Wenn ich versuche, dupliziertes Objekt zu speichern, lehnt Xcode das Speichern ab, aber die Tabelle wird mit der duplizierten Zelle aktualisiert.

Also habe ich die einzigartigen Attribute startdate und enddate gesetzt.

Dann habe ich meine Speicherfunktion geändert, um den Fehler zu behandeln und den Benutzer durch UIAlertController zu informieren.

%Vor%

So weit, so gut, aber wenn ich mit dem Abbrechen-Button zum Root-Controller zurückkehre, erscheint die Tabelle mit einer doppelten Zelle aktualisiert.

%Vor%

Darüber hinaus stoppen und führen Sie die Anwendung entfernt die Duplikate.

Hier ist es ein Video von das problematische Verhalten.

Der generierte Fehler ist folgender:

%Vor%

Die Änderung von addContract (), um das Problem zu beheben, ist wie folgt:

%Vor%     
nikolayDudrenov 14.06.2015, 10:29
quelle

1 Antwort

5

Verwenden Sie NSFetchedResultsController , um die Daten anzuzeigen?

Es scheint, dass die Einzigartigkeit nur beim Speichern gewährleistet ist. Mit Core Data können Sie das Objekt jedoch weiterhin in NSManagedObjectContext einfügen:

%Vor%

Beim Speichern schlagen die Sicherungsoperationen fehl, aber das Objekt befindet sich weiterhin im Kontext, sodass NSFetchedResultsController es weiterhin anzeigt.

Versuchen Sie, das Objekt aus dem Kontext in Ihrem Fangcode zu entfernen:

%Vor%     
LombaX 14.06.2015, 12:37
quelle

Tags und Links