1

我刚刚设置了我的应用程序的新版本,但是在更新到新版本的设备上,应用程序在我 applicationDidFinishLaunching:WithOptions: 之后立即崩溃。我更新/添加了一些属性到我的 CoreData 数据库。

这是包含崩溃的线程。有什么帮助吗?

    Date/Time:       2013-03-07 18:14:47.532 +0100
    OS Version:      iOS 6.0 (10A405)
    Report Version:  104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Crashed Thread:  9


0   libsystem_kernel.dylib          0x3b501350 __pthread_kill + 8
1   libsystem_c.dylib               0x3807cfb2 pthread_kill + 54
2   libsystem_c.dylib               0x380b93ea __abort + 90
3   libsystem_c.dylib               0x380b9388 abort + 124
4   distribution                    0x001fed18 -[MOManager persistentStoreCoordinator] + 420
5   distribution                    0x0020000e -[NSThread(DataCore) threadContext] + 274
6   distribution                    0x001fd470 +[KwManagedObject defaultContext] + 44
7   distribution                    0x001fd6f6 +[KwManagedObject countWithPredicate:] + 26
8   distribution                    0x001fd6d6 +[KwManagedObject count] + 18
9   distribution                    0x001b3c46 +[DbThread dbCount] (DbThread.m:31)
10  distribution                    0x001b3d1a -[DbThread main] (DbThread.m:43)
11  Foundation                      0x38e69a3c __NSThread__main__ + 968
12  libsystem_c.dylib               0x3805f0de _pthread_start + 306
13  libsystem_c.dylib               0x3805efa4 thread_start + 4
4

1 回答 1

4

当您启动一个使用 CoreData 的应用程序时,该应用程序会在(默认情况下)Documents 目录中创建一个 sqlite 文件。此 sqlite 的内容由您创建的 CoreData 模型 (xcdatamodeld) 描述。当您对 CoreData 模型 (xcdatamodeld) 进行更改时,您必须使用它迁移您的 sqlite 文件。

当更改很小时,这可以由 CoreData(轻量级迁移,查看文档)自动完成。但是,当您进行重大更改时,您必须确保在更新后用户启动您的应用程序时手动迁移数据。例如,这可以通过您编写的迁移方法来完成。在使用新模型初始化任何 CoreData 对象之前,您必须执行此方法。

我建议您在此处查看文档。在将您的应用程序提交到 AppStore 之前,请务必对其进行测试。确保您还通过在设备上安装先前版本的 adhoc ipa、启动旧版本、然后安装更新的 ipa 并再次启动应用程序来“模拟”更新。

如果您有任何问题随时问。

于 2013-03-07T21:33:40.383 回答