Hi Defender,
du bist auf ein typisches Problem gestoßen, bei dem die Initalisierung (AppDelegate) noch nicht abgeschlossen ist, während einer der ViewController bereits Daten requested.
Im Falle einer SQLite Datenbank tritt das Problem im Normalfall auf, wenn Du eine neue Version Deiner Datenbank mit der App testen willst und die alte App aus dem Simulator löscht (Oder das Verzeichnis im Finder).
Nachdem Dein ViewController anscheinend ausgeführt wird, bevor der App-Delegate fertig ist, versucht der View-Controller auf die Datenbank zuzugreifen, findet sie nicht-- und das endet dann in dem Problem das Du eine Datenbank mit 0 KB (einen leeren DB-File) im Verzeichnis wiederfindest.
Du überprüfst im AppDelegate aller wahrscheinlichkeit nach ob die Datenbank existiert und Sie kopierst wenn nicht vorhanden.
In den meisten Fällen tritt der von Dir beschriebene Fehler auf, wenn die ViewController-XIB über den Interface-Builder zusammen gestöpselt, connected sind.
Wie auch immer, auch in anderen Szenarios kannst Du Dir nicht sicher sein das diese Race-Condition auch wirklich erfüllt ist. Deswegen mein Lösungsvorschlag in Deinem Entry-ViewController einen Standard-Screen zu zeigen mit einer Aktivitätsanzeige und den "echten" Screen einzublenden, sobald Dein App-Delegate gelaufen ist. (Dies machst Du natürlich über den App-Delegate)
Hatte dieses Problem selbst vor kurzem. Irgendein Posting auf StackoverFlow hat dies vorgeschlagen(sorry kein Link parat) und es funktioniert jetzt wieder wie es sein soll - Mein ViewController "wartet" sozusagen bis die Initialisierung, wenn nötig abgeschlossen ist.
Hoffe das hilft Dir ein bisschen weiter. Lass mich wissen wies geht mit der Problemlösung.
Besten Gruß
Georg
|