Ich mache eine iPhone App, die Daten aus einer XML-Datei liest, sie in Core Data Managed Objects wandelt und sie speichert.Kryptischer Fehler von Core Data: NSInvalidArgumentException, Grund: referenceData64 nur für abstrakte Klasse definiert
Die Anwendung funktioniert gut, meist auf kleineren Datensatz/XML, die ~ 150 Objekte enthält. Ich sagte, vor allem, weil 10% der Zeit, würde ich die folgende Ausnahme von Coredata erhalte beim Versuch, den Kontext zu speichern:
* App beenden aufgrund nicht abgefangene Ausnahme ‚NSInvalidArgumentException‘, Grund: ‚* -_referenceData64 nur definiert für abstrakte Klasse. Definieren Sie - [NSTemporaryObjectID_default _referenceData64]! '
Bei einem größeren Datensatz (~ 2000) passiert dies jedes Mal, aber nicht am selben Ort. Es könnte auf dem 137. Rekord, 580 oder dem allerletzten scheitern. Ich habe versucht, den Speicherpunkt zu verschieben (pro Objekt, pro 10 Objekte, speichern, sobald alle Objekte zugewiesen/init sind), aber ich habe immer die Ausnahme oben getroffen.
Ich habe die Ausnahme gegoogelt und sah jemanden mit den gleichen Problemen, aber keine Auflösungen gesehen.
Mein nächster Schritt war, die verwalteten Objekte und Beziehungen zu einem Punkt zu vereinfachen, an dem dieser Fehler aufhört, und von dort zu bauen, um das Problem zu isolieren. Der letzte Ausweg besteht darin, Core Data abzuzweigen und direkt in sqllite zu speichern.
Vielen Dank für Ihre Hilfe!
Verwenden Sie abstrakte Entitäten im Modell? –
Hallo Marcus, ich habe keine abstrakte Entitäten verwendet, aber ich habe mehrere Threads verwendet und ich habe nicht die Regeln um Kerndaten in Threads zu verstehen. – Brombie
Ich bin mir nicht ganz sicher, aber es scheint mir, dass Sie eine abstrakte Entität haben, die Sie instanziieren möchten. Kannst du uns über das Erbe aufklären? Was für eine seltsame Fehlermeldung! – beinstein