Sprawdzanie duplikatów podczas importowania do CoreData

Importuję dane do magazynu danych podstawowych za pomocą RestKit i muszę sprawdzić, czy nie ma duplikatów. Jeśli przedmiot jest już w sklepie, chciałbym go zaktualizować o najnowsze atrybuty. Jeśli to nowy element, chciałbym go utworzyć.

Import był powolny, więc użyłem instrumentów i zobaczyłem, że najdłuższą częścią importowania było sprawdzenie, czy element już istnieje (z żądaniem pobrania)

Chciałbym więc wiedzieć, czy sprawdzając, czy przedmiot jest już w sklepie, czy szybciej jest:

użyj countForFetchRequest, aby sprawdzić, czy element już istnieje, a następnie executeFetchRequest, aby zwrócić element do aktualizacji lubpo prostu executeFetchRequest, aby zaktualizować elementczy jest lepszy sposób, aby to zrobić?

Pomyślałem, że countForFetchRequest będzie szybszy, ponieważ cały obiekt NSManagedObject nie zostanie zwrócony, a żądanie pobrania zostanie wykonane tylko wtedy, gdy wiem, że będzie obiekt NSManagedObject.

Dzięki

- (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;

}

questionAnswers(1)

yourAnswerToTheQuestion