iPhone 应用程序因 coreData 错误而崩溃

标签 iphone core-data crash migration

我们应用程序的第一个版本已在应用程序商店中发布。为了使应用程序国际化,对应用程序使用的核心数据模型进行了一个微小的更改,该更改是 - 添加到其中一个实体的新属性。

我通过向核心数据添加新的版本控制模型并将当前的 Core DataModel 设置为创建的新版本来进行更改。

为了进行轻量级迁移,我还添加了所需的选项,如下所示:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
    [NSNumber numberWithBool:YES],    NSMigratePersistentStoresAutomaticallyOption,
    [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]  initWithManagedObjectModel:[self managedObjectModel]];
[__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error];

在模拟器中测试和在设备上测试(连接到 MAC 时)时,所有这些工作正常。一旦我制作了 ipa 文件并将其安装到设备上,应用程序在启动时就崩溃了。显示 default.png 文件,然后不加载其他 View 。

应用程序崩溃日志显示了 CoreData 的一些问题,但我无法指出这就是导致问题的原因。崩溃日志如下所示:

Last Exception Backtrace:
0   CoreFoundation                  0x374f388f __exceptionPreprocess + 163
1   libobjc.A.dylib                 0x31568259 objc_exception_throw + 33
2   CoreData                        0x324ee491 -[NSManagedObjectModel(_NSInternalMethods) _setIsEditable:] + 1
3   Company                         0x000dfe7f 0xde000 + 7807
4   Company                         0x000dfc91 0xde000 + 7313
5   Company                         0x000ecb5b 0xde000 + 60251
6   Company                         0x000ec8a3 0xde000 + 59555
7   Company                         0x000ec82b 0xde000 + 59435
8   Company                         0x000eb61d 0xde000 + 54813
9   UIKit                           0x3080cd59 -[UIViewController awakeFromNib] + 113
10  UIKit                           0x3089f207 -[UINib instantiateWithOwner:options:] +     1243
11  UIKit                           0x308a0861 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 137
12  UIKit                           0x307d6385 -[UIApplication _loadMainNibFileNamed:bundle:] + 37
13  UIKit                           0x3065f6eb -[UIApplication _loadMainInterfaceFile] + 223
14  UIKit                           0x3065972f -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 235
15  UIKit                           0x30627ac3 -[UIApplication handleEvent:withNewEvent:] + 1011
16  UIKit                           0x30627567 -[UIApplication sendEvent:] + 55
17  UIKit                           0x30626f3b _UIApplicationHandleEvent + 5827
18  GraphicsServices                0x3764322b PurpleEventCallback + 883
19  CoreFoundation                  0x374c7523 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 39
20  CoreFoundation                  0x374c74c5 __CFRunLoopDoSource1 + 141
21  CoreFoundation                  0x374c6313 __CFRunLoopRun + 1371
22  CoreFoundation                  0x374494a5 CFRunLoopRunSpecific + 301
23  CoreFoundation                  0x3744936d CFRunLoopRunInMode + 105
24  UIKit                           0x3065886b -[UIApplication _run] + 551
25  UIKit                           0x30655cd5 UIApplicationMain + 1081
26  Company                         0x000df5df 0xde000 + 5599
27  Company                         0x000df598 0xde000 + 5528


Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x3289832c __pthread_kill + 8
1   libsystem_c.dylib               0x34c0d208 pthread_kill + 48
2   libsystem_c.dylib               0x34c06298 abort + 88
3   libc++abi.dylib                 0x3221bf64 abort_message + 40
4   libc++abi.dylib                 0x32219346 _ZL17default_terminatev + 18
5   libobjc.A.dylib                 0x31568350 _objc_terminate + 140
6   libc++abi.dylib                 0x322193be _ZL19safe_handler_callerPFvvE + 70
7   libc++abi.dylib                 0x3221944a std::terminate() + 14
8   libc++abi.dylib                 0x3221a81e __cxa_rethrow + 82
9   libobjc.A.dylib                 0x315682a2 objc_exception_rethrow + 6
10  CoreFoundation                  0x37449506 CFRunLoopRunSpecific + 398
11  CoreFoundation                  0x37449366 CFRunLoopRunInMode + 98
12  UIKit                           0x30658864 -[UIApplication _run] + 544
13  UIKit                           0x30655cce UIApplicationMain + 1074
14  Company                         0x000df5d8 0xde000 + 5592
15  Company                         0x000df590 0xde000 + 5520

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0   libsystem_kernel.dylib          0x328883a8 kevent + 24
1   libdispatch.dylib               0x346a5f04 _dispatch_mgr_invoke + 708
2   libdispatch.dylib               0x346a5c22 _dispatch_mgr_thread + 30

Thread 2:
0   libsystem_kernel.dylib          0x32898cd4 __workq_kernreturn + 8
1   libsystem_c.dylib               0x34bc8f36 _pthread_wqthread + 610
2   libsystem_c.dylib               0x34bc8cc8 start_wqthread + 0

Thread 3:
0   libsystem_kernel.dylib          0x32898cd4 __workq_kernreturn + 8
1   libsystem_c.dylib               0x34bc8f36 _pthread_wqthread + 610
2   libsystem_c.dylib               0x34bc8cc8 start_wqthread + 0

Thread 4 name:  WebThread
Thread 4:
0   libsystem_kernel.dylib          0x328980d8 __psynch_mutexwait + 24
1   libsystem_c.dylib               0x34bc2674 pthread_mutex_lock + 376
2   WebCore                         0x336994e8 _ZL17_WebTryThreadLockb + 208
3   WebCore                         0x336997ec _ZL14WebRunLoopLockP19__CFRunLoopObservermPv + 24
4   CoreFoundation                  0x374c7b14 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 12
5   CoreFoundation                  0x374c5d50 __CFRunLoopDoObservers + 252
6   CoreFoundation                  0x374c616a __CFRunLoopRun + 946
7   CoreFoundation                  0x3744949e CFRunLoopRunSpecific + 294
8   CoreFoundation                  0x37449366 CFRunLoopRunInMode + 98
9   WebCore                         0x3373cc9c _ZL12RunWebThreadPv + 396
10  libsystem_c.dylib               0x34bce72e _pthread_start + 314
11  libsystem_c.dylib               0x34bce5e8 thread_start + 0

Thread 5:
0   libsystem_kernel.dylib          0x32898cd4 __workq_kernreturn + 8
1   libsystem_c.dylib               0x34bc8f36 _pthread_wqthread + 610
2   libsystem_c.dylib               0x34bc8cc8 start_wqthread + 0

Thread 0 crashed with ARM Thread State:
r0: 0x00000000    r1: 0x00000000      r2: 0x00000001      r3: 0x00000000
r4: 0x00000006    r5: 0x3f18dd98      r6: 0x00000002      r7: 0x2fedca68
r8: 0x0c641d30    r9: 0x00000000     r10: 0x0c63fd00     r11: 0x3fae9728
ip: 0x00000148    sp: 0x2fedca5c      lr: 0x34c0d20f      pc: 0x3289832c

cpsr:0x000f0010

线路

"2 CoreData   0x324ee491 -[NSManagedObjectModel(_NSInternalMethods) _setIsEditable:] + 1" 

表明核心数据存在一些问题,但我不知道什么也不知道我需要做什么来解决这个问题。有什么想法吗?

最佳答案

我花了很长时间才发现这个问题。

正在使用构建脚本构建 ipa 文件,这是由构建错误引起的。

构建的.ipa文件不包含第二个版本的核心数据。所以应用程序总是崩溃。

关于iPhone 应用程序因 coreData 错误而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14882875/

相关文章:

ios - 无法在 iOS 应用程序中打开 Google map

iphone - 与 Objective-C 的 VPN 连接

ios - 将一个 NSObject 替换为另一个并保存在 coredata 中

android - "cannot combine custom titles with other title features"和 "Source code does not match binarycode"

c# - 如何对事件日志中的 .NET 2.0 错误报告消息进行故障排除?

ios - Xamarin.iOS随机崩溃无效的强制转换异常

iphone - mac上的iOS模拟器运行的是i386架构,不是armv7?

ios - 核心数据 - Swift - 捕获 "keypath not found in entity"错误

ios - NSSortDescriptor 问题

ios - RestKit 0.20 NSCFConstantString valueForUndefinedKey映射关系时出错