Ragul
Ragul

Reputation: 3196

One-To-Many relationship core data saves only last object. Others are missing

Am trying to save some objects to NSSet but the last object only getting saved. My sample source code is

func saveData(){
  let appDelegate =
    UIApplication.shared.delegate as! AppDelegate
  let managedContext = appDelegate.managedObjectContext

  let personEentity =  NSEntityDescription.entity(forEntityName: "PersionalDetails",
                                         in:managedContext)
  let person = PersionalDetails(entity: personEentity!,
                    insertInto: managedContext)

  let favourateEentity =  NSEntityDescription.entity(forEntityName: "Favourites",
                                                in:managedContext)
  let favourate = Favourites(entity: favourateEentity!,
                              insertInto: managedContext)

  person.name = "Ragul"
  person.age = 28
  person.mobileNumber = "0000000000"
  person.sex = "male"
  for i in 0..<5{
    favourate.movie = "Some movie" + "\(i)"
    favourate.actor = "Some actor" + "\(i)"
    favourate.song = "some song" + "\(i)"
    favourate.person = person
  }
  do {
    try managedContext.save()
  } catch let error as NSError  {
    print("Could not save \(error), \(error.userInfo)")
  }
 }

Kindly guide me to get out from this error.

Upvotes: 1

Views: 68

Answers (1)

Nirav D
Nirav D

Reputation: 72410

As of you are setting properties of same object in for loop so that you are getting only last object what you need to do is every time in iteration of for loop you need to create new instance of Favourites then it will store all objects that you have created not the only last one.

for i in 0..<5{
    let favourate = Favourites(entity: favourateEentity!, insertInto: managedContext)
    favourate.movie = "Some movie" + "\(i)"
    favourate.actor = "Some actor" + "\(i)"
    favourate.song = "some song" + "\(i)"
    favourate.person = person
}

Upvotes: 3

Related Questions