J'ai le code suivant, et je me demandais s'il y avait un moyen de le rendre plus rapide. Fondamentalement, mon application télécharge du JSON (environ 4000 enregistrements) à partir du réseau, et met à jour ou crée mes objets gérés en fonction des données. Pour le moment, c'est assez lent, et je peux voir pourquoi, mais je suis nouveau pour les données de base, alors je me demandais si je pouvais faire quelque chose pour le rendre plus rapide?Mise à jour des données de base s'il existe ou créer un nouvel objet géré. Puis-je faire cela plus vite?
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Company" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
NSMutableArray *coreDataArray = [[managedObjectContext executeFetchRequest:request error:nil] mutableCopy];
[request release];
for (NSDictionary *dict in arr) {
NSArray *filtered = [coreDataArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(code == %@)", [dict objectForKey:@"Code"]]];
//NSLog(@"COREDATA ARRAY: %d FILTERED ARRAY: %d CODE: %@ COREDATA FIRST CODE: %@", [coreDataArray count], [filtered count], [dict objectForKey:@"Code"], [[coreDataArray objectAtIndex:0] code]);
if ([filtered count] > 0) {
Company *c = [filtered objectAtIndex:0];
if ([dict objectForKey:@"Defunct"]) {
NSLog(@"DELETED DEFUNCT COMPANY");
[managedObjectContext deleteObject:c];
} else {
[c populateWithJSONDictionary:dict];
}
} else {
Company *c = (Company *)[NSEntityDescription insertNewObjectForEntityForName:@"Company" inManagedObjectContext:managedObjectContext];
[c populateWithJSONDictionary:dict];
}
float percent = (float)[arr indexOfObject:dict]/[arr count];
[self performSelectorInBackground:@selector(updateProgressView:) withObject:[NSString stringWithFormat:@"%f",percent]];
}
[coreDataArray release];
Un grand merci pour toute aide que vous pouvez donner.
êtes-vous sûr que les données JSON extraction est une question pas pour vous ralentir l'application vers le bas si vous utilisez SBJSON. Parce qu'il est plus lent que les autres presque 9 fois. Et aussi s'il vous plaît accepter des réponses aussi. – Robin
Salut, pas l'analyse syntaxique JSON est très rapide, j'utilise JSON Framework. Je suis à peu près sûr que c'est le tableau filtré à l'intérieur de la boucle for qui le ralentit. – Marky