Хорошо, ребята, я пытаюсь выяснить это, но у меня трудное время. Так что у этого приложения есть синтаксический анализатор XML, который отправляет и захватывает все xmls, анализирует их и сохраняет все данные в Core Data. Это все прекрасно работает. Однако я пытаюсь сохранить базовые данные и вызвать их при следующем запуске, за исключением тех случаев, когда я делаю это, анализатор запускается снова, и те же элементы снова объединяются в uitableview. Я знаю, что это потому, что в applicationDidFinishLaunchingWithOptions я вызываю [parser getAllConferences] каждый раз, когда приложение запускается, однако я не уверен, как его запускать только тогда, когда Core Data пуст. Надеюсь, что вы все можете пролить свет на этот вопрос :) Любые комментарии и предложения приветствуются, если что-то еще нужно, дайте мне знать!
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
SHPEXmlParser *parser = [SHPEXmlParser alloc];
[parser initWithManagedObjectContext:[self managedObjectContext]];
[parser getAllConferences];
[parser release];
[self.viewController initWithContext:[self managedObjectContext]];
// Override point for customization after application launch.
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
- (void)applicationWillTerminate:(UIApplication *)application
{
[self saveContext];
}
- (void)saveContext
{
NSError *error = nil;
if (managedObjectContext != nil)
{
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])
{
/*
Replace this implementation with code to handle the error appropriately.
abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. If it is not possible to recover from the error, display an alert panel that instructs the user to quit the application by pressing the Home button.
*/
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
}