2013-07-08 92 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

相关问题