我想知道是否有一种有效的方法可以将20000个对象保存到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 { ... }
所以对我来说主要的问题是,我怎样才能更快地节省20000个汽车对象?我将非常感谢你的回答!
如果你有任何问题-请问我,也许我忘了提到什么或分享我的一些代码片段。