2016-12-18 60 views
2

我想存储一个有28个条目的数组到我的coreData。有没有办法做到这一点? 我用这段代码试过了,但看起来这段代码只是重写了这个值。在CoreData中的Swift数组

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属性for循环的价值。将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

非常感谢:) –