应用程序拒绝在persistenstore创build崩溃

我的应用程序在启动时因为崩溃而被拒绝,在象征崩溃日志之后,我得到了以下结果:

Incident Identifier: -- CrashReporter Key: -- Hardware Model: xxx Process: BUDGT [1029] Path: /private/var/mobile/Containers/Bundle/Application/F5D98A63-AF73-4A76-A80C-EA57B4E41082/BUDGT.app/BUDGT Identifier: --.BUDGT Version: 1 (4) Code Type: ARM-64 (Native) Parent Process: launchd [1] Date/Time: 2015-05-08 18:09:23.379 -0700 Launch Time: 2015-05-08 18:09:23.142 -0700 OS Version: iOS 8.3 (12F70) Report Version: 105 Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Triggered by Thread: 0 Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libsystem_kernel.dylib 0x0000000197acb270 __pthread_kill + 8 1 libsystem_pthread.dylib 0x0000000197b6916c pthread_kill + 108 2 libsystem_c.dylib 0x0000000197a42b14 abort + 108 3 BUDGT 0x000000010009ee5c -[AppDelegate persistentStoreCoordinator] (AppDelegate.m:222) 4 BUDGT 0x000000010009e96c -[AppDelegate managedObjectContext] (AppDelegate.m:153) 5 BUDGT 0x00000001000a0abc -[Factory setupDataHandler] (Factory.m:54) 6 BUDGT 0x00000001000a0830 -[Factory init] (Factory.m:30) 7 BUDGT 0x00000001000a07c4 __25+[Factory defaultFactory]_block_invoke (Factory.m:22) 8 libdispatch.dylib 0x0000000197985950 _dispatch_client_callout + 12 9 libdispatch.dylib 0x0000000197986828 dispatch_once_f + 92 10 BUDGT 0x00000001000a0794 +[Factory defaultFactory] (once.h:68) 11 BUDGT 0x000000010009dab8 -[AppDelegate application:didFinishLaunchingWithOptions:] (AppDelegate.m:17) 12 UIKit 0x000000018a5c318c -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 400 13 UIKit 0x000000018a7da850 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2372 14 UIKit 0x000000018a7dd204 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1500 15 UIKit 0x000000018a7db774 -[UIApplication workspaceDidEndTransaction:] + 180 16 FrontBoardServices 0x000000018e3193c4 __31-[FBSSerialQueue performAsync:]_block_invoke_2 + 28 17 CoreFoundation 0x0000000185ac8278 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 16 18 CoreFoundation 0x0000000185ac7380 __CFRunLoopDoBlocks + 308 19 CoreFoundation 0x0000000185ac59a4 __CFRunLoopRun + 1752 20 CoreFoundation 0x00000001859f12d0 CFRunLoopRunSpecific + 392 21 UIKit 0x000000018a5bc438 -[UIApplication _run] + 548 22 UIKit 0x000000018a5b6fa8 UIApplicationMain + 1484 23 BUDGT 0x000000010009da38 main (main.m:16) 24 libdyld.dylib 0x00000001979b2a04 start + 0 

这意味着它必须在我的AppDelegate abort()中失败

 - (NSPersistentStoreCoordinator *)persistentStoreCoordinator { if (persistentStoreCoordinator != nil) { return persistentStoreCoordinator; } NSError *error = nil; persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"database.sqlite"]; NSPersistentStoreCoordinator *psc = persistentStoreCoordinator; NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; NSPersistentStore *store = [psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]; if (!store) { NSLog(@"Unresolved Error"); abort(); // This is line 222 of AppDelegate } return persistentStoreCoordinator; } 

得到像这样的目录:

 - (NSURL *)applicationDocumentsDirectory { return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; } 

和那样的妈妈:

 - (NSManagedObjectModel *)managedObjectModel { if (managedObjectModel != nil) { return managedObjectModel; } managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil] ; return managedObjectModel; } 

苹果拒绝消息:

我们无法检查您的应用程序,因为它在启动时崩溃。

我个人不能重现这个问题。

我的设备和模拟器的更新 – 以及干净的版本运行得很好没有任何问题。

我在这个应用程序中改变的事情是:

  • 支持应用程序组(coredata容器不在应用程序组容器中)
  • 更改为椰子树的链接
  • 添加WatchKit应用程序
  • 添加今天扩展
  • 迁移所有视图使用AutoLayout(砌体)

但我不通过应用程序组容器访问核心数据,它仍然只是坐在电话(应该呆在那里)我正在使用应用程序组的东西不同(通过它传递简单的消息)。

任何想法可能会导致这个崩溃的应用程序启动与苹果审查小组?

部署目标是iOS 8.2(针对所有应用和扩展)

更新

我只是手动安装提交的存档(应用程序商店提交的原始版本)到一个清洁的设备。 一切正常。 没有问题,没有崩溃。

我还能检查什么?

那么…答案很简单。 我的应用程序没有错。

“感谢您的回应,经过进一步的审查,我们发现应用程序不会在发布时崩溃。”