应用程序因创建持久存储而崩溃而被拒绝 [英] App rejected for crash on persistenstore creation

查看:99
本文介绍了应用程序因创建持久存储而崩溃而被拒绝的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用因启动崩溃而被拒绝,在象征崩溃日志后,我得到了这个:

My app got rejected for crash on launch and after symbolizing the crash log i have this:

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

this means it must have failed here at abort() in my AppDelegate

- (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;
}

苹果拒绝消息:

由于您的应用在启动时崩溃,因此我们无法对其进行审核.

We could not review your app as it crashes on startup.

我个人无法重现该问题.

i personally cannot reproduce the problem.

我的设备和模拟器都进行了更新-干净的版本运行得很好,没有任何问题.

both an update to my devices and simulators - as well as clean builds run just fine without any issues.

我在此应用程序中所做的更改是:

the things i changed in this application was:

  • 对应用程序组的支持(coredata容器在应用程序组容器中不是)
  • 已更改为cocoapods以进行链接
  • 添加了WatchKit应用
  • 添加了今天的扩展程序"
  • 将所有视图迁移为使用自动版式(砌体)
  • support for app groups (coredata container is not in the app group container)
  • changed to cocoapods for linking
  • added WatchKit App
  • added Today Extension
  • migrated all views to use AutoLayout (Masonry)

无论如何,我没有通过应用程序组容器访问核心数据,它仍然只坐在电话上(应该留在手机上),而我正在使用应用程序组进行其他操作(通过它传递简单的消息).

however I am not accessing core data through the app group container, it still only sits on the phone (and should stay there) i am using the app group for something different (pass simple messages through it).

有什么想法可能会导致与Apple Review Team一起启动时使应用程序崩溃?

any ideas what might be causing this to crash the app on startup with apples review team?

部署目标是iOS 8.2(适用于所有应用和扩展程序)

deployment target is iOS 8.2 (for all the app & extensions)

更新

我只是将提交的归档文件(用于应用商店提交的原始版本)手动安装到已清理的设备上.一切正常.没有问题,没有崩溃.

i just manually installed the submitted archive (the original build for the app store submission) to a cleaned device. everything works perfectly. no issues, no crashes.

我还能检查什么?

推荐答案

嗯...答案很简单.我的应用程序没有任何问题.

Well... the answer is simple. There was nothing wrong with my Application.

"谢谢您的回复.在进一步审查后,我们发现 应用程序在启动时不再崩溃."

"Thank you for your response. Upon further review, we have found the application no longer crashes on launch."

这篇关于应用程序因创建持久存储而崩溃而被拒绝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆