2010-11-16 184 views
0

我從兩個測試者得到了下面的崩潰日誌,不同的設備(3GS和4)和版本(4.1和4.2 GM):核心數據崩潰

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x00000000, 0x00000000 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libSystem.B.dylib    0x000792d4 __kill + 8 
1 libSystem.B.dylib    0x000792c4 kill + 4 
2 libSystem.B.dylib    0x000792b6 raise + 10 
3 libSystem.B.dylib    0x0008dd72 abort + 50 
4 libstdc++.6.dylib    0x00044a20 __gnu_cxx::__verbose_terminate_handler() + 376 
5 libobjc.A.dylib     0x00006594 _objc_terminate + 104 
6 libstdc++.6.dylib    0x00042df2 __cxxabiv1::__terminate(void (*)()) + 46 
7 libstdc++.6.dylib    0x00042e46 std::terminate() + 10 
8 libstdc++.6.dylib    0x00042f16 __cxa_throw + 78 
9 libobjc.A.dylib     0x000054c4 objc_exception_throw + 64 
10 CoreData      0x000030a6 -[NSPersistentStoreCoordinator initWithManagedObjectModel:] + 254 
11 MyApp       0x00002d50 -[FooAppDelegate persistentStoreCoordinator] (FooAppDelegate.m:249) 
12 MyApp       0x00002bb4 -[FooAppDelegate managedObjectContext] (FooAppDelegate.m:207) 
13 MyApp       0x000021b8 -[FooAppDelegate awakeFromNib] (FooAppDelegate.m:25) 
[snip] 

這是標準的核心代碼數據應用程序模板,所以我沒有太大的改變。 我所做的更改是從輕量級遷移轉移到傳遞nil作爲選項,並刪除以前的數據model.xcdatamodel,model2.xcdatamodel,...,model7.xcdatamodel文件,除了最新的,我從model7.xcdatamodel重命名爲model.xcdatamodel。

我的測試手機,iPhone 4和iPhone 3G都沒有發生這種崩潰,它們都運行4.2。我讓我的測試人員從iPhone上刪除應用程序並重新安裝,但問題是一樣的。 所有在模擬器中運行良好,適用於iOS4到4.2。 任何想法這裏發生了什麼?

謝謝!

+0

不能告訴剛剛從崩潰日誌中發生了什麼,因爲它正在變得如此艱難,它沒有留下任何有用的消息。我認爲問題在於你的遷移,儘管我會假設只使用最新版本進行刪除和重新安裝可以解決這個問題。該應用是否帶有任何數據?如果是這樣,那可能是問題。 – TechZen 2010-11-17 23:20:23

+0

不知道。我認爲這是造成這種情況的綜合因素。將提出一個答案,試圖解釋它。 – Christoph 2010-11-18 16:31:55

回答

0

我認爲這個問題從根本上說是我刪除了所有未使用的數據模型,但是由於某種原因,我切換到當前的數據模型並不堅持。

當我分支出來嘗試修復破損的版本時,其中一個更改的git diff將當前模型版本從model7.xcdatamodel設置爲model.xcdatamodel。我相當肯定我之前做過這件事,因爲XCode上的綠色複選標記在剩下的唯一數據模型中顯示得很好,但由於某種原因,它並沒有粘住。

在我的上一個測試版本(0.19)和提交的版本(1.0.0)之間有兩個修訂。我仔細檢查了這兩個修訂版中的更改,其中一個將當前數據模型設置爲正確的數據模型。這就是爲什麼我的測試與提交的版本工作(數據模型設置正確),但測試者的版本沒有(因爲它沒有正確設置)。

很高興我終於明白了。士氣:讓雙倍額外確保你的數據模型的變化都在那裏。