2012-04-05 11 views
0

Ich verwende Kerndaten mit vorinstallierten SQLite-Datenbank. Ich stoße auf ein seltsames Problem, die App funktioniert auf dem Simulator, aber wenn ich versuche, es auf einem Gerät, z. iPad, ich bekomme den Fehler unten.iOS Persistent Store Problem

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject persistentStore]: unrecognized selector sent to instance 0x3bebf50' 

Ich habe die SQLite-Datenbank aus dem Modell neu erstellt und die Datenbank neu bevölkert, aber ich bekomme immer noch den gleichen Fehler. Ich habe die 'Compiled Sources' und 'Copy Bundle Resources' in der Build Phase Sektion überprüft und die Dateien sind alle da.

Code: http://pastebin.com/fTTgEA3W

worden mein Gehirn Regale und kann nicht scheinen zu verstehen, warum es nicht funktioniert, würde jede Hilfe wirklich schätzen werden.

Vielen Dank für Ihre Zeit und wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen.

Antwort

0

Erste Maßnahme: Löschen Sie die App und installieren Sie neu.

Zweite Maßnahme: Textsuche für einen Anruf an persistentStore in Ihrem Code. Es geht anscheinend zu einer Adresse, die eine NSManagedObjectContext ist, die diese Methode nicht hat. Beheben Sie den Fehler, wenn Sie ihn finden.

Dritte Maßnahme: Überprüfen Sie Ihre Erholungsalgorithmen, um sicherzustellen, dass Sie das Geschäft korrekt erstellen. In meinen Projekten mit großen Geschäften habe ich normalerweise eine SETUP Markierung, die ich einschalte, wenn der Speicher aus Rohdaten importiert werden muss, was wegen des Speicherbedarfs normalerweise nur im Simulator funktioniert. (Wenn SETUP ausgeschaltet ist und kein Speicher vorhanden ist, wird der zuvor generierte kopiert.) Möglicherweise ist auf dem iPad nicht genügend Speicher vorhanden, um den Datenimport durchzuführen.

+0

Danke für Ihre Hilfe. Ich probiere deine Schritte aus. "Vielleicht haben Sie auf dem iPad nicht genug Speicher, um den Datenimport durchzuführen." Bedeutet das, dass ich die Anzahl der Zeilen in der Datenbank verringern oder andere Werte für die Methoden setFetchOffset, setFetchLimit, setFetchBatchSize? – JingJingTao

+0

Nein, ich meine, dass Sie den Rohdatenimport auf dem Simulator durchführen, um die große SQLite-Datenbank vorzubereiten. Sie können das dann auf das iPad (das Dokumentenverzeichnis des Programms) kopieren, wenn die App das erste Mal ausgeführt wird. – Mundi

+0

Hallo Mundi, Entschuldigung für die späte Antwort. Ich denke das Problem ist, dass die Tabellenansicht versucht, auf viele Datensätze zu laden, und es gibt ein Speicherproblem, wenn ich setFetchLimit verwende, sagen wir gleich 100, dann funktioniert es. Auch ich verstehe immer noch nicht wirklich, was Sie vorschlagen, ich füge derzeit die vorinstallierte Datenbank zum Projekt hinzu und kopiere in das Dokumentverzeichnis des Programms (Logik in meiner persistenten Speichermethode meines Anwendungsdelegaten). Ich weiß nicht, wir sind auf der gleichen Seite noch, danke für Ihre Hilfe, bitte erläutern Sie Ihren Punkt mehr wenn nötig, ich leise neu in iOS-Entwicklung, so dass vielleicht etwas fehlt. – JingJingTao