2016-02-18 3 views
0

Я пытаюсь заполнить свой объект в CoreData для нового приложения. Я создал новую функцию с именем initializeDB(), которая устанавливает новые значения для объекта, а затем вызывает функцию save() (в пределах, конечно, блок try). Однако оказывается, что только последний объект фактически сохранен. Мне любопытно узнать, почему это так. Я знаю, что только последний сохраняется, так как я делаю выборку и вижу только, что возвращается последний.Сохранение нескольких записей данных в CoreData

 date = myTimeZoneDateFormatter1.dateFromString("2016-02-03")! 
     entity.setValue("3.1", forKey: "distanceOfRun") 
     entity.setValue(date, forKey: "dateOfRun") 
     do{ 
      try moc.save() 
      print("save was successful") 
     } 
     catch{ 

      print("Entry was not saved")  } 

     date = myTimeZoneDateFormatter1.dateFromString("2016-02-05")! 
     entity.setValue("3.1", forKey: "distanceOfRun") 
     entity.setValue(date, forKey: "dateOfRun") 
     do{ 
      try moc.save() 
      print("save was successful") 
     } 
     catch{ 

      print("Entry was not saved")  } 

     date = myTimeZoneDateFormatter1.dateFromString("2016-02-07")! 
     entity.setValue("3", forKey: "distanceOfRun") 
     entity.setValue(date, forKey: "dateOfRun") 
     do{ 
      try moc.save() 
      print("save was successful") 
     } 
     catch{ 

      print("Entry was not saved")  } 

Любая помощь в попытке понять это сделало бы меня очень благодарной.

ответ

1

Это потому, что вы повторно сохраняете одни и те же атрибуты объекта каждый раз, когда вы делаете save(). Вы должны создать новый объект для каждого объекта с помощью этого метода:

let newobject = NSEntityDescription.entityForName("my_entity", inManagedObjectContext: context) 
date = myTimeZoneDateFormatter1.dateFromString("2016-02-03")! 
newobject.setValue("3.1", forKey: "distanceOfRun") 
newobject.setValue(date, forKey: "dateOfRun") 

А затем сохраните контекст еще раз.

+0

ahh я вижу, так что, по сути, я не делаю никаких новых «строк», а на самом деле просто редактирую одно и то же? @thxou – hnaderi

+0

Это именно то, что происходит – thxou

+0

, но разве вам не нужно делать выборку прежде, чем вы сможете редактировать? – hnaderi

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