2013-03-29 76 views
2

我有一個應用程序在應用程序中創建持久存儲:didFinishLaunchingWithOptions。添加商店顯然可能需要很長時間,這會導致iOS在完成啓動之前終止應用程序。 如何將商店添加到主線程的協調器?任何例子? stackoverflow link核心數據應用程序未能及時啓動

OS版本:iOS的6.1.3(10B329) 報告版本:104

異常類型:00000020 異常代碼:0x000000008badf00d 突出螺紋:0

特定應用信息: 融爲一體。 maksanzhi.person無法及時啓動

已用總CPU時間(秒):13.470(用戶13.470,系統0.000),22%CPU 消逝應用CPU時間(秒):0.343,1%CPU

線程0名:調度隊列:com.apple.main線程 線程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; 

}

+0

只是創建一個商店通常不會花費太多時間。你能告訴我們你的所有啓動代碼嗎?也許探查器將會幫助你確定你的發射時間正在被吃掉。 –

+0

我編輯了更多信息的問題。 – Astakhoff

回答

3

作爲一般建議您不應在applicationDidFinishLaunching方法中創建任何重量。核心數據持久性存儲不是很難創建,但是由於遷移過程,該特性可能是。要確定這是持久性存儲,而不是別的,請嘗試將該部分代碼註釋掉。 您是否正在使用數據初始化商店?

+0

是的,我用數據初始化商店。我可以發送或分享我的代碼嗎? – Astakhoff

+2

這就是要點。你不應該這樣做。更好地顯示一個模式視圖控制器,並使用來自根視圖控制器的微調器並在此初始化。 applicationDidFinishLaunching必須儘快返回。我不需要你編碼,我很確定問題在這裏。 – Andrea

+0

非常感謝Andrea,我是新的iOS Dev請問如何用spinner顯示一個模態視圖控制器? – Astakhoff

相關問題