我想知道是否存在一种将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个汽车对象的速度更快?我将非常感谢您的回答! 如果您有任何问题-请问我,也许我忘了提些什么或共享我的一些代码了。