2016-12-18 2 views
2

Я хочу хранить массив с 28 элементами в моей основной базе данных. Есть какой-либо способ сделать это? Я пробовал это с помощью этого кода, но похоже, что этот код только переписывает значение.Swift Array in CoreData

let appDelegate = 
     UIApplication.shared.delegate as! AppDelegate 

    let managedContext = appDelegate.persistentContainer.viewContext 

    let entity = NSEntityDescription.entity(forEntityName: "PillTook", 
              in:managedContext) 

    let value = NSManagedObject(entity: entity!, 
           insertInto: managedContext) 

    for var index in 0...27 { 

     value.setValue(false, forKey: "took") 

     do { 
      try managedContext.save() 

      pillTook.append(value) 

     } catch let error as NSError { 
      print("Could not save \(error), \(error.userInfo)") 
     } 
    } 

ответ

0

Да, ваш код создает только один NSManagedObject, и обновляет значение атрибута took в течение цикла. Переместите линию let value = ... в цикл for, чтобы создать новую NSManagedObject для каждой итерации. Я также рекомендовал бы сохранить контекст только один раз после цикла for, вместо сохранения на каждой итерации:

let appDelegate = UIApplication.shared.delegate as! AppDelegate 

let managedContext = appDelegate.persistentContainer.viewContext 

let entity = NSEntityDescription.entity(forEntityName: "PillTook", in:managedContext) 

for var index in 0...27 { 

    let value = NSManagedObject(entity: entity!, insertInto: managedContext) 
    value.setValue(false, forKey: "took") 
    pillTook.append(value) 
} 
do { 
    try managedContext.save() 
} catch let error as NSError { 
    print("Could not save \(error), \(error.userInfo)") 
} 
+1

Большое спасибо :) –