2013-07-08 93 views
1

我們的應用程序使用MagicalRecord將數據存儲在覈心數據中。到目前爲止,它工作得很好,但現在,在向我的表中添加字段後,應用程序崩潰,但僅在發佈版本中。在發佈版本中使用MagicalRecord時,應用程序崩潰

當我通過電纜升級時,它工作得很好,但是當我使用Ad-Hoc(企業)分佈來升級應用程序時,應用程序崩潰。

問題是我沒有得到任何關於崩潰的調試數據。我唯一得到的是一個「信號異常退出11:分段故障:11」的錯誤。

崩潰報告: (http://pastebin.com/64c4jvgJ

我認爲這個問題可能涉及到需要移植的,但我找不到這是如何工作的任何好的文檔。任何指向正確方向的指針都是受歡迎的。

更新: 更多信息 - 在更新我的數據模型之前,我有一個名爲PAM.sqlite的商店和一個名爲PAM.xcdatamodeld的非版本化商店。現在我有一個版本的商店,簡稱PAM & PAM 2.

我使用此代碼來嘗試自動遷移,但它不工作:

[MagicalRecord setDefaultModelNamed:@"PAM 2.xcdatamodel"]; 
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"PAM.sqlite"]; 
+0

你有沒有得到答案?有同樣的問題... – gillyD

+0

@gillyD:你可以[看我的答案](http://stackoverflow.com/questions/17532724/app-crashes-when-using-magicalrecord-in-release-build/#answer- 32779414) –

+0

是的 - 感謝發佈。 – gillyD

回答

0

我有同樣的問題。嘗試在xcdatamodeld中添加新版本。然後按當前激活它。在finder中打開它。選擇顯示包內容。你會看到兩個版本的兩個文件。將舊版本替換爲舊版本中的未版本化文件。使用這個

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"PAM.sqlite"]; 

所以你的項目將有兩個版本的數據庫。並且將有自動遷移的能力。適用於iOS MagicalRecord的

0

默認設置(https://github.com/magicalpanda/MagicalRecord)是這樣的

#ifdef DEBUG 
[self setShouldDeleteStoreOnModelMismatch:YES]; 
#else 
[self setShouldDeleteStoreOnModelMismatch:NO]; 
#endif 

這意味着,如果有變化的數據庫模型在調試模式下,他們會簡單地刪除舊版本的數據model.I相信這已在最新版本的魔法記錄中得到修復。

如果不是,將其更改爲

#ifdef DEBUG 
[self setShouldDeleteStoreOnModelMismatch:NO]; 
#else 
[self setShouldDeleteStoreOnModelMismatch:NO]; 
#endif 

和修復遷移代碼

2

您需要指定數據模型的extenstion(例如MyProjectDB.momd

所以,代碼語法將是:

[MagicalRecord setDefaultModelNamed:@"MyProjectDB.momd"]; 

找到了答案here

相關問題