0

I am trying to Update core data Entities with the below code :

(void)home:(UIBarButtonItem *)sender


{

managedObjectContext = [appDel managedObjectContext];

NSError *error;

NSFetchRequest * request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Data" inManagedObjectContext:managedObjectContext];

[request setEntity:entity];
[request setPredicate:[NSPredicate predicateWithFormat:@"name=%@ and number=%@",self.name,[NSNumber numberWithInt:temp]]];


NSManagedObject *managedObject =[[NSManagedObject alloc]initWithEntity:entity insertIntoManagedObjectContext:managedObjectContext];
managedObject = [[managedObjectContext executeFetchRequest:request error:&error] lastObject];

[managedObject setValue:self.name forKey:@"name"];
[managedObject setValue:[NSNumber numberWithInt:self.number] forKey:@"number"];

[managedObjectContext save:nil];

BOOL saved = [managedObjectContext save:&error];

if (!saved)
{
    NSLog(@"Data Not Saved");
}
else
{
    NSLog(@"Data Saved");
}
[self.navigationController popToRootViewControllerAnimated:YES];

}

Can anyone Tell me if i am doing anything wrong? I also tried This Solution But it didn't work.

Community
  • 1
  • 1
Jaymin Raval
  • 205
  • 2
  • 19

1 Answers1

0
NSManagedObject *managedObject =[[NSManagedObject alloc]initWithEntity:entity insertIntoManagedObjectContext:managedObjectContext];

creates a new object. If you want to update an existing object then you should execute only the fetch request, and update the fetched object.

Only if no (matching) object exists, then you would create it.

Martin R
  • 529,903
  • 94
  • 1,240
  • 1,382