2010-09-10 106 views
0

我有2個應用程序使用核心數據與sqlite持久性存儲。我有一個數據加載器例程,我運行它來從csv文件填充CoreData DB。在開發過程中,當我的數據發生變化時,我會從模擬器運行例程來生成新的數據庫並將新數據庫複製到項目中。XCode 3.2.4 iOS 4.1(最終)和CoreData在模擬器崩潰

這對XCode 3.2.3和iOS 4.0來說工作得非常好。它甚至可以在XCode 4 Preview 2和3中運行。我只安裝了最終版本的XCode 3.2.4和iOS 4.1。現在我的db加載程序失敗。它沒有給我留言,沒有警告,沒有任何東西。它只是轉儲到彈簧板,XCode給我「調試終止」消息。它會在加載過程中的不同時間失敗,所以我很確定這不是數據問題。我沒有做任何線程。我認爲這個問題與Core Data或者sqlite有關,因爲那是崩潰發生的時候,但是沒有任何信息報告我無法確定。

我卸載了所有東西。 Xcode 3.2.4,Xcode 4預覽(假設它是由XCode 4引起的問題)並重新安裝XCode 3.2.3/iOS 4.0。事情恢復正常。完成一些工作後,我試圖再次升級到3.2.4/iOS 4.1。我卸載了3.2.3/iOS 4.0,重新啓動。安裝3.2.4/iOS 4.1,重新啓動並重試。沒有運氣。同樣的嚴重崩潰。與原因一樣,缺少消息傳遞。

我已經確定,這隻發生在XCode 3.2.4的模擬器中,該設備和XCode 4和3.2.3一樣好。我試過玩目標操作系統選擇(3.0,3.1,4.0,4.1)。我已經厭倦了從GCC 4.0,GCC 4.2,LLVM GCC 4.2,LLVM 1.5調整編譯器。我已經嘗試將基礎SDK設置爲iOS模擬器4.1。有趣的是,它使用3.2 SDK時可以在iPad模擬器中工作。所以我至少把這當作解決方法。

我想有3個問題之一:

  1. 與我的代碼的問題已被發現的3.2.4。

  2. 3.2.4中的錯誤。

  3. 我錯過了一個配置問題。

如果任何人有任何疑難解答的想法或答案,我很樂意聽到他們。自V 2.1以來,我一直在做iOS全職工作,並且我深陷困境。

由於提前,

回答

0

我想通了我的問題。它看起來像CoreData/Sqlite連接是一個完全的紅鯡魚。在閱讀完SO之後,我使用了OSX的控制檯應用程序,並收到了一條關鍵消息「無法及時啓動」,該消息未在XCode的調試器控制檯中顯示。

由於實質上是超時錯誤,看起來進程正在被殺死。 iPhone會殺死一個需要很長時間才能完成「didFinishLaunching」的應用程序。這就是我踢數據加載例程的地方。新版本的XCode必須調整它的超時值。

因此,如果XCode沒有告訴你所有的事情,並留意那些紅鯡魚,我的外賣給OSX的控制檯一個鏡頭。

0

保存managedObjectContext時,當我升級我碰到了麻煩在模擬器。我終於刪除了我的sqlite CoreData存儲文件,並沒有遇到類似的問題。嘗試刪除您的數據文件(並刪除之前保存它的副本,看看有什麼不同)。

+0

對核心數據問題進行故障排除時的一個很好的提示。這是我在處理Core Data奇怪問題時嘗試的第一件事情之一。 – TheGeoff 2010-09-13 04:19:42