我想快速将数据插入coredata中。 Iam使用以下代码一次将批量数据插入数据库表。但是它总是插入单行并继续更新表中的行。

谁能帮我解决这个问题。

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总是更新行,而不是 swift 插入新行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37475614/

10-14 21:06
查看更多