在发布版本中使用MagicalRecord时,应用程序崩溃

时间:2013-07-08 17:37:26

标签: magicalrecord

我们的应用使用MagicalRecord在Core Data中存储数据。它到目前为止工作正常,但现在,在我的表中添加字段后,应用程序崩溃了,但仅在发布版本中崩溃。

当我通过电缆升级时,它运行正常,但当我使用Ad-Hoc(Enterprise)分发升级应用程序时,应用程序崩溃。

问题是我没有得到任何关于崩溃的调试数据。我唯一得到的是“异常退出信号11:分段错误:11”错误。

崩溃报告: (http://pastebin.com/64c4jvgJ

我认为这个问题可能与需要迁移有关,但是我找不到任何关于它应该如何工作的好文档。任何指示方向都是正确的。

更新: 更多信息 - 在更新我的datamodel之前,我有一个名为PAM.sqlite的商店,以及一个名为PAM.xcdatamodeld的非版本商店。现在我有一个版本化的商店,名为PAM& PAM 2。

我使用此代码尝试自动迁移,但它不起作用:

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

3 个答案:

答案 0 :(得分:2)

您需要指定数据模型的扩展(例如 MyProjectDB.momd

所以,代码语法是:

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

找到答案here

答案 1 :(得分:0)

我有同样的问题。尝试在xcdatamodeld中添加新版本。然后将其激活为当前。在finder中打开它。选择显示包内容。您将看到两个版本的两个文件。将旧版本的旧版本替换为旧版本的非版本文件。使用此

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

所以你的项目将有两个版本的db。并且能够自动迁移。

答案 2 :(得分:0)

MagicalRecord for iOS(https://github.com/magicalpanda/MagicalRecord)的默认设置是这样的

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

这意味着,如果DEBUG模式下的数据库模型发生了变化,他们只会删除旧版本的数据模型。我相信这已在最新版本的魔法记录中得到修复。

如果没有,请将其更改为

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

并修复迁移代码