I have this data structure in my app. As you can see, I assume that each car brand is sold by one dealer and a dealer may sell more than one brand.
I'm retrieving CarBrand data from a web service. Since I'm getting data in bulk how do I save data so that the carbrand data is associated with Delear record (thus maintaining the relationship that I established)
This is my attempt :
let moc = DataController().managedObjectContext
let carbrandEntity = NSEntityDescription.insertNewObjectForEntityForName("carbrandEntity", inManagedObjectContext: moc) as! CarBrand
let dealerEntity = NSEntityDescription.insertNewObjectForEntityForName("DealerEntity", inManagedObjectContext: moc) as! Dealer
for carbrand in self.carbrandArray {
// add our data
carbrandEntity.setValue(carbrand[0], forKey: "brandname")
carbrandEntity.setValue(carbrand[1], forKey: "makeyear")
do {
try moc.save()
} catch {
fatalError("Failure to save context: \(error)")
}
}
dealerEntity.setValue("Steven&Sons", forKey: "name")
// How do I save dealer entity so that it is associated with the carbrand data that I just added.
UPDATE
This is my attempt but when I fetch specific dealer, I get the dealer information but CarBrand(NSSet) is always empty.
let moc = DataController().managedObjectContext
let carbrandEntity = NSEntityDescription.insertNewObjectForEntityForName("carbrandEntity", inManagedObjectContext: moc) as! CarBrand
let dealerEntity = NSEntityDescription.insertNewObjectForEntityForName("DealerEntity", inManagedObjectContext: moc) as! Dealer
dealerEntity.setValue("Steven&Sons", forKey: "name")
for carbrand in self.carbrandArray {
// add our data
carbrandEntity.setValue(carbrand[0], forKey: "brandname")
carbrandEntity.setValue(carbrand[1], forKey: "makeyear")
}
do {
try moc.save()
} catch {
fatalError("Failure to save context: \(error)")
}
UPDATE
I'm still not getting any carband data. Here's an updated code
let dealerEntity = NSEntityDescription.insertNewObjectForEntityForName("DealerEntity", inManagedObjectContext: moc) as! Dealer
dealerEntity.setValue("Steven&Sons", forKey: "name")
for c in self.carbrandArray {
dealerEntity.carbrand?.setValue(c[0], forKey: "brandname")
dealerEntity.carbrand?.setValue(c[1], forKey: "makeyear")
}
Just in case if I'm making any mistake in fetching, here's my FETCH CODE
let moc = DataController().managedObjectContext
let dealerEntity = NSFetchRequest(entityName: "DealerEntity")
do {
let dealers = try moc.executeFetchRequest(dealerEntity) as! [Dealer]
for d in dealers {
print(d.carbrand!.count) // Returns 0
}
} catch {
fatalError("Failed to fetch saved data: \(error)")
}


