Je suis en train de développer une application qui analyse les données XML ant en CoreData. Je veux qu'il démarre rapidement, donc je charge les données à partir de CoreData d'abord, et après charger et analyser XML dans un autre thread. Le problème est que lorsque l'application commence première fois CoreData est vide et je commence à analyser:ExecuteFetchRequest une seconde fois si la première fois que CoreData était vide
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SlideItem" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
// Execute the fetch -- create a mutable copy of the result.
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil)
{
// Handle the error.
NSLog(@"mutableFetchResults == nil");
}
NSLog(@"mutableFetchResults count = %d", [mutableFetchResults count]);
if ([mutableFetchResults count] == 0) // if DB is empty
{
[self loadAndParse]; // here I do it in the main thread
//so my CoreData is filled with data here
}
//but if try to execute my request again like this:
mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
//it is empty again
Comment puis-je faire? merci
Merci, Comment faire? Je suis nouveau à l'objectif-c donc il faut clair, J'ai essayé [NSManagedObjectContext refreshObject: managedObjectContext mergeChanges: YES]; mais cela ne fonctionne pas ( – Burjua
Et BTW c'est le même thread)) – Burjua
'refreshObject:' est appelée à partir du contexte qui effectue la modification. Vous ne passez pas le contexte, vous passez l'objet modifié. 'mergeChanges' est appelé après l'enregistrement du contexte A pour la notification' ContextDidSave' du contexte B. – TechZen