gpt4 book ai didi

ios - Coredata 总是更新行而不是快速插入新行

转载 作者:行者123 更新时间:2023-11-29 00:57:31 25 4
gpt4 key购买 nike

我想快速将数据插入coredata中。我使用以下代码将批量数据立即插入数据库表中。但它总是插入单行并不断更新表中的行。

谁能帮我解决这个问题吗?

func insertIntoTestClass(testClassArray : [DBTestClass])
{
let managedObject = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext

let table1 = NSEntityDescription.insertNewObjectForEntityForName("testClass", inManagedObjectContext: managedObject) as! testClass

for i in 0..<checklistConfiguration.count
{
let insertArray = checklistConfiguration[i]

table1.test1 = insertArray.test1!
table1.test2 = insertArray.test2!
table1.test3 = insertArray.test3!
table1.test4 = insertArray.test4!
}

do{
try managedObject.save()
}
catch
{
let returnError = error as NSError
print("\(returnError)")
}
}

最佳答案

从我在您的代码中看到的情况来看,您没有创建 testClass 对象的新实例,而是更新了在循环之前创建的唯一实例的属性。

您应该将 table1 的创建移到循环内,以便在循环的每次迭代中都可以创建新实例。

为了提高效率,您还应该在循环后保存您的托管对象上下文。

func insertIntoTestClass(testClassArray : [DBTestClass])
{
let managedObject = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext

for i in 0..<checklistConfiguration.count
{
let table1 = NSEntityDescription.insertNewObjectForEntityForName("testClass", inManagedObjectContext: managedObject) as! testClass
let insertArray = checklistConfiguration[i]

table1.test1 = insertArray.test1!
table1.test2 = insertArray.test2!
table1.test3 = insertArray.test3!
table1.test4 = insertArray.test4!
}

do{
try managedObject.save()
}
catch
{
let returnError = error as NSError
print("\(returnError)")
}
}
}

关于ios - Coredata 总是更新行而不是快速插入新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37475614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com