Comprobando duplicados al importar a CoreData
Estoy importando datos a un almacén de Core Data usando RestKit y necesito verificar si hay duplicados. Si el artículo ya está en la tienda, me gustaría actualizarlo con los últimos atributos. Si es un artículo nuevo, me gustaría crearlo.
La importación fue lenta, así que usé Instrumentos y vi que la parte más larga de la importación fue verificar si el elemento ya existe (con una solicitud de recuperación)
Así que me gustaría saber si la verificación para ver si el artículo ya está en la tienda, es más rápido para:
use countForFetchRequest para ver si el elemento ya existe, luego ejecuteFetchRequest para devolver el elemento a actualizar osimplemente ejecuteFetchRequest para obtener el elemento a actualizar¿O hay una mejor manera de hacer esto?Pensé que countForFetchRequest sería más rápido ya que no se devuelve todo el NSManagedObject y solo ejecuta la solicitud de recuperación si sé que va a haber un NSManagedObject.
Gracias
- (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;
}