我有一个在应用程序中创建持久存储的应用程序:didFinishLaunchingWithOptions。添加商店显然需要太长时间,这会导致iOS在完成启动之前终止应用程序。 如何将商店添加到主线程的协调器?任何例子? stackoverflow link
操作系统版本: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名称:Dispatch queue: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;
}
答案 0 :(得分:3)
作为一般建议,您不应在applicationDidFinishLaunching方法中创建任何重要内容。核心数据持久存储创建起来并不重要,但由于迁移过程,该功能可能很复杂。为了确保这是持久性存储而不是其他东西,请尝试注释掉那部分代码。 您是否正在使用数据初始化商店?