Мне стало интересно, существует ли эффективный способ сохранения 20 000 объектов в CoreData.В настоящее время их сохранение занимает около 2 минут, и было бы здорово, если бы я мог сделать это быстрее.
Теперь я делаю сохранение следующим образом:
for serverCar in serverCars {
let dbObjectCar = DBObjectCar.createWithAttributes(["carNbr" : serverCar.carNbr! as AnyObject], context: context) as DBObjectCar
self.handleCar(serverCar: serverCar, dbObjectCar: dbObjectCar, defaultContext: context)
}
где
class func createWithAttributes(_ attributes: [String : AnyObject], context: NSManagedObjectContext = DBContext.defaultContext) -> Self {
let object = create(context: context)
if attributes.count > 0 {
object.setValuesForKeys(attributes)
}
return object
}
create
метод это:
class func create(context: NSManagedObjectContext = DBContext.defaultContext) -> Self {
let entityDescription = NSEntityDescription.entity(forEntityName: entityName, in: context)
let object = self.init(entity: entityDescription!, insertInto: context)
return object
}
и
fileprivate func handleCar(serverCar: ServerCar, dbObjectCar: DBObjectCar, defaultContext: NSManagedObjectContext) {
_ = Mapper.Map(serverCar, dbo: dbObjectCar, context: defaultContext)
}
и Mapper
это:
class func Map(_ serverCar: ServerCar, dbObjectCar: DBObjectCar, context : NSManagedObjectContext) -> DBObjectCar {
if let carNbr = serverCar.carNbr {
serverCar.setValue(carNbr, forKey: "carNbr")
}
return serverCar
}
, а также я хочучтобы представить мои классы объектов:
open class DBObjectCar: NSManagedObject { ... }
struct ServerCar : JSON { ... }
Итак, главная проблема для меня заключается в том, как я могу ускорить сохранение этих 20 000 автомобильных объектов?Я буду очень признателен за ваши ответы!Если у вас есть какие-либо вопросы - пожалуйста, спросите меня, может быть, я забыл упомянуть что-то или поделиться некоторыми частями моего кода.