我刚刚设置了我的应用的新版本,但是在更新到新版本的设备上 版本,应用程序崩溃后我的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
答案 0 :(得分:3)
当您启动使用CoreData的应用程序时,应用程序会在(默认情况下)Documents目录中创建一个sqlite文件。此sqlite的内容由您创建的CoreData模型(xcdatamodeld)描述。当您对CoreData模型(xcdatamodeld)进行更改时,必须使用它迁移sqlite文件。
当更改很小时,可以通过CoreData自动完成(轻量级迁移,查看文档)。但是,当您进行重大更改时,您必须确保在用户在更新后启动应用程序时手动迁移数据。这可以通过您编写的迁移方法来完成。在使用新模型初始化任何CoreData对象之前,必须执行此方法。
我建议您查看文档here。在将应用程序提交到AppStore之前,还要始终测试您的应用程序。 确保您还通过在设备上安装以前版本的adhoc ipa来“模拟”更新,启动旧版本,然后安装更新的ipa并再次启动应用程序。
如果您有任何疑问,请随时提出。