В настоящее время я использую coredata для моего проекта. Но когда api возвращает 54000 объектов, которые необходимо обновить, пользователь должен ждать почти 2 часа. Это основная проблема для текущего проекта, и я собираюсь использовать sqlite и больше не использовать coredata для обновления тысяч объектов.Sqlite или Core Data для обновления более 50000 записей
Правильное решение использовать Sqlite или какие-либо предложения для CoreData? Я не могу решить. Любая помощь будет отличной. Спасибо.
Вот что я делаю:
NSManagedObjectContext *privateObjectContext = [AppDelegate appDelegate].privateManagedObjectContext;
[privateObjectContext performBlock:^{
int i = 1;
for (NSDictionary *item in itemlist) {
i++;
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:
@"itemID == %@",[item objectForKey:@"item_id"]
]];
NSError *error;
NSMutableArray *inventories = [[NSMutableArray alloc]initWithArray:
[privateObjectContext executeFetchRequest:fetchRequest
error:&error]];
ItemManagedObject *itemMO;
if(inventories.count){
itemMO = inventories.firstObject;
}else{
itemMO = [NSEntityDescription insertNewObjectForEntityForName:@"ItemObject"
inManagedObjectContext:privateObjectContext];
}
[itemMO prepareWithDictionary:item];
}
NSError *error;
if (![privateObjectContext save:&error]) {
completionHandler(NO);
}
}
Можете ли вы описать, что вы в настоящее время обновляете объекты, которые занимают почти 2 часа?Могут быть способы улучшить его, но невозможно сказать, как, не зная, что вы делаете сейчас. –
Да, нам нужно более подробно, как вы обрабатываете обновления, как часто вы сохраняете контекст, использовали ли вы инструменты для поиска узких мест, размещаете код – trapper
@TomHarrington. Я добавляю код. – mega90