Verificando duplicatas ao importar para o CoreData
Estou importando dados para um armazenamento Core Data usando RestKit e preciso verificar se há duplicatas. Se o item já estiver na loja, eu gostaria de atualizá-lo com os atributos mais recentes. Se é um novo item, gostaria de criá-lo.
A importação foi lenta, então usei o Instruments e vi que a parte mais longa da importação era verificar se o item já existe (com uma solicitação de busca)
Então, eu gostaria de saber se verificar se o item já está na loja, é mais rápido para:
use countForFetchRequest para ver se o item já existe, execute executeFetchRequest para retornar o item para atualizar ouapenas executeFetchRequest para obter o item para atualizarOu há uma maneira melhor de fazer isto?Eu pensei que countForFetchRequest seria mais rápido, já que o NSManagedObject inteiro não é retornado e só executaria a solicitação de busca se eu soubesse que haveria um NSManagedObject.
obrigado
- (Product *)productWithId:(int)productID {
NSManagedObjectContext *context = [Model sharedInstance].managedObjectContext;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"product_id == %d", productID];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"Product" inManagedObjectContext:context];
request.predicate = predicate;
request.fetchLimit = 1;
NSError *error = nil;
NSUInteger count = [context countForFetchRequest:request error:&error];
if (!error && count == 1) {
NSArray *results = [context executeFetchRequest:request error:&error];
if (!error && [results count]) {
return [results objectAtIndex:0];
}
return nil;
}
return nil;
}