Проверка на наличие дубликатов при импорте в CoreData
m импортирует данные в хранилище Core Data с помощью RestKit и должен проверять наличие дубликатов. Если товар уже в магазине, яЯ хотел бы обновить его с последними атрибутами. Если оно'это новый предмет, яЯ хотел бы создать это.
Импорт был медленным, поэтому я использовал Instruments и увидел, что самая длинная часть импорта проверяла, существует ли элемент (с запросом на выборку)
Так что я'Хотелось бы узнать, проверяет ли товар уже в магазине, быстрее ли он:
используйте countForFetchRequest, чтобы увидеть, существует ли элемент, затем выполните executeFetchRequest, чтобы вернуть элемент для обновления илипросто запуститеFetchRequest, чтобы получить элемент для обновленияили есть лучший способ сделать это?Я думал, что countForFetchRequest будет быстрее, так как весь NSManagedObject не 't вернулся и выполнил запрос на выборку, только если я знаюбудет 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;
}