2016-05-27 7 views
0

Я хочу вставить данные в coredata в swift. Iam, используя следующий код для вставки объемных данных в таблицу базы данных сразу. Но он всегда вставляет одну строку и продолжает обновлять строку в таблице.Coredata всегда обновляет строку вместо вставки новой строки в swift

Может кто-нибудь, пожалуйста, помогите мне решить это.

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)") 
     } 
    } 

ответ

1

Из того, что я могу видеть в вашем коде, вы не создаете новые экземпляры вашего 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)") 
    } 
    } 
} 
+0

спасибо. Глупая ошибка. Мне стыдно.:-( –

Смежные вопросы