我从两个测试人员,不同设备(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。 知道这里发生了什么吗?
谢谢!
答案 0 :(得分:0)
我认为问题是,从根本上说,我删除了所有未使用的数据模型,但由于某种原因,我切换到当前的数据模型并没有坚持下去。
当我扩展尝试修复损坏的版本时,其中一个更改的git diff将当前模型版本从model7.xcdatamodel设置为model.xcdatamodel。我相当肯定我之前做过的,因为在左边唯一的数据模型中,小绿色选中标记显示XCode很好,但由于某种原因它没有坚持。
我的上一个测试版本(0.19)和提交的版本(1.0.0)之间有两个版本。我仔细检查了这两个版本中的更改,其中一个将当前数据模型设置为正确的模型。这就是为什么我对提交的版本的测试工作(数据模型设置正确),但测试人员的版本没有(因为没有正确设置)。
很高兴我终于明白了。士气:进一步确保你的数据模型发生了变化。