Проверка на наличие дубликатов при импорте в CoreData

Я импортирую данные в Базовое хранилище данных с помощью RestKit и должен проверить их на наличие дубликатов. Если товар уже находится в магазине, я бы хотел обновить его до последних атрибутов. Если это новый элемент, я бы хотел его создать.

Импорт был медленным, поэтому я использовал Instruments и увидел, что самая длинная часть импорта проверяла, существует ли элемент (с запросом на выборку)

Поэтому я хотел бы знать, проверяет ли товар уже в магазине, быстрее ли он:

use countForFetchRequest to see if the item already exists, then executeFetchRequest to return the item to update or just executeFetchRequest to get the item to update or is there a better way to do this?

Я думал, что countForFetchRequest будет быстрее, поскольку весь NSManagedObject не возвращается и выполняет запрос на выборку только в том случае, если я знаю, что это будет NSManagedObject.

Спасибо

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

}

Ответы на вопрос(1)

Ваш ответ на вопрос