initWithManagedObjectModel中的核心数据崩溃

时间:2010-11-16 22:00:52

标签: iphone core-data ios4

我从两个测试人员,不同设备(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]

这是来自标准Core Data应用程序模板的代码,因此我在该领域的变化不大。 我做的更改是从轻量级迁移转移到传递nil作为选项,并删除以前的数据model.xcdatamodel,model2.xcdatamodel,...,model7.xcdatamodel文件,除了最新的,我从model7.xcdatamodel重命名为model .xcdatamodel。

我的测试手机,iPhone 4和iPhone 3G都没有发生崩溃,两者都运行4.2。我让我的测试人员从他们的iPhone上删除了应用程序并重新安装它,但问题是一样的。 一切都适用于模拟器,适用于iOS4到4.2。 知道这里发生了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为问题是,从根本上说,我删除了所有未使用的数据模型,但由于某种原因,我切换到当前的数据模型并没有坚持下去。

当我扩展尝试修复损坏的版本时,其中一个更改的git diff将当前模型版本从model7.xcdatamodel设置为model.xcdatamodel。我相当肯定我之前做过的,因为在左边唯一的数据模型中,小绿色选中标记显示XCode很好,但由于某种原因它没有坚持。

我的上一个测试版本(0.19)和提交的版本(1.0.0)之间有两个版本。我仔细检查了这两个版本中的更改,其中一个将当前数据模型设置为正确的模型。这就是为什么我对提交的版本的测试工作(数据模型设置正确),但测试人员的版本没有(因为没有正确设置)。

很高兴我终于明白了。士气:进一步确保你的数据模型发生了变化。