如何在Swift中将2万个对象有效地保存到CoreData中?

时间:2018-10-13 14:33:11

标签: ios swift core-data

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

0 个答案:

没有答案