2

application:didFinishLaunchingWithOptions に永続ストアを作成するアプリがあります。ストアの追加には明らかに時間がかかりすぎる可能性があり、起動が完了する前に iOS がアプリを終了させて​​しまいます。メインスレッドからコーディネーターにストアを追加する方法は? 例はありますか? スタックオーバーフロー リンク

OS バージョン: iOS 6.1.3 (10B329) レポート バージョン: 104

例外の種類: 00000020 例外コード: 0x000000008badf00d 強調表示されたスレッド: 0

アプリケーション固有の情報: com.maksanzhi.person が時間内に起動できませんでした

経過した合計 CPU 時間 (秒): 13.470 (ユーザー 13.470、システム 0.000)、22% CPU 経過したアプリケーション CPU 時間 (秒): 0.343、1% CPU

スレッド 0 名: ディスパッチ キュー: com.apple.main-thread スレッド 0:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator

if (_persistentStoreCoordinator != nil) {
    return _persistentStoreCoordinator;
}

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"COOLPERSONS.sqldata"];

NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:[storeURL path]]) {

    NSURL *defaultStoreURL = [[NSBundle mainBundle] URLForResource:@"COOLPERSONS" withExtension:@"sqldata"];
    if (defaultStoreURL) {
        [fileManager copyItemAtURL:defaultStoreURL toURL:storeURL error:NULL];
        [self addSkipBackupAttributeToItemAtURL:storeURL];
    }
}


NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {

    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}

return _persistentStoreCoordinator;



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
MainViewController *cvtc = (MainViewController *)[[nav viewControllers]objectAtIndex:0];
cvtc.managedObjectContext = self.managedObjectContext;
[self setAppereance];
return YES;

}

4

1 に答える 1

3

一般的なアドバイスとして、applicationDidFinishLaunching メソッドで重いものを作成しないでください。コア データの永続ストアの作成はそれほど難しくありませんが、移行プロセスにより機能が大きくなる可能性があります。それが永続ストアであり、他のものではないことを確認するには、コードのその部分をコメントアウトしてみてください。ストアをデータで初期化していますか?

于 2013-03-29T05:49:26.477 に答える