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% 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:
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%