我有很多想要一次性放入核心数据属性的对象,有这么快的方法吗?我知道您使用此系统来创建对象,但您必须反复运行它以添加新对象。
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let newName = NSEntityDescription.insertNewObject(forEntityName: "StoredNames", into: context)
newName.setValue("Jim", forKey: "name")
有一个快速的解决方案吗?我可以一次性将多个名称添加到name属性中。
答案 0 :(得分:1)
如果您想使用NSPersistentContainer
,则应将viewContext
视为只读。如果要插入核心数据,则应使用performBackgroundTask
,这将为您提供插入的上下文。在该块中插入所有内容并在结束时调用一次。这将避免多次保存到核心数据。
let lotsOfStuffToInsert = ["Eugenio Barefoot",
"Shaquita Lettieri",
"Tami Hollingworth",
"Marion Pruitt",
"Hubert Pigeon",
"Stewart Christon",
"Clarence Murry",
"Roni Bohnsack",
"Mozell Oberman",
"Mellissa Dowd",
"Sybil Swinton"]
self.persistentContainer.performBackgroundTask { (managedObjectContext) in
for name in lotsOfStuffToInsert{
let newName = NSEntityDescription.insertNewObject(forEntityName: "StoredNames", into: managedObjectContext)
newName.setValue(name, forKey: "name")
}
do {
try managedObjectContext.save()
} catch {
}
}
还要确保添加核心数据设置
container.viewContext.automaticallyMergesChangesFromParent = true