0

I hope it's a duplicate of other links like: How to update existing object in Core Data?

But my scenario is little bit different.

The thing is I created one Sample Core Data Project.

Step 1: I have 3 ViewController classes

In 1st Screen: I created one field in core data "password" ==> I saved using code like:

NSManagedObjectContext *context = [self managedObjectContext];
// Create a new userInfo
NSManagedObject *newuserInfo = [NSEntityDescription insertNewObjectForEntityForName:@"UserInfo" inManagedObjectContext:context];
[newuserInfo setValue:self.passwordTxtFldRef.text forKey:@"password"];
NSError *error = nil;
// Save the object to persistent store
if (![context save:&error]) {
   // NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}

In 2nd Screen: I have two textfields like: Oldpassword & newpassword . Here I saved old password in NSUserDefaults and in 2nd screen i checked the condition weather the oldpassword is correct or not --> It's perfect.

Here my requirement is I want to update Oldpassword to newpassword ---> in 2nd screen itself.

How can I do this? Can you please help me out regarding this?

Community
  • 1
  • 1
Mannam Brahmam
  • 2,225
  • 2
  • 24
  • 36
  • you can look at it once http://www.appcoda.com/core-data-tutorial-update-delete/ – iOS Developer Feb 11 '16 at 08:39
  • By using this tutorial only i created Demo ---> In Same view controller means i can Create/update/delete ===> my requirement is updating password from one 2nd viewcontroller to 1st viewcontroller – Mannam Brahmam Feb 11 '16 at 08:43

2 Answers2

0

Here i use code like:

-(void)getSavedDataFromCoreData{
NSManagedObjectContext *context = [self managedObjectContext];
NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"UserInfo" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc]init];
[request setEntity:entitydesc];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"password like %@",oldPasswordStr];
[request setPredicate:predicate];
NSError *error;
NSArray *matchingData = [context executeFetchRequest:request error:&error];
if(matchingData.count<=0){
    //NSLog(@"Cancel");
}else{
    for(NSManagedObject *obj in matchingData){
        [obj setValue:alertTextField2.text forKey:@"password"];
    }
    [context save:&error];
    NSMutableArray *array3 = [matchingData valueForKey:@"password"];
    NSString *value3 = [array3 objectAtIndex:0];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setValue:value3 forKey:@"savedPassword"];
    [defaults synchronize];
    [self showGeneralAlertMessage:@"Password Changed Successfully" withTitle:@"Success"];
}
}
Mannam Brahmam
  • 2,225
  • 2
  • 24
  • 36
0

This will help you to update the value.

-(void)updateDataInCoreData {

NSManagedObjectContext *context = appDelegate.managedObjectContext;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:context];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"number == %@",userDict[@"number"]];
[fetchRequest setPredicate:predicate];
[fetchRequest setFetchLimit:1];
[fetchRequest setEntity:entity];
NSError *error;
NSArray *arrResult = [context executeFetchRequest:fetchRequest error:&error];
User *entity1 = arrResult[0];
entity1.number = @"123456";
[appDelegate saveContext];

}

Ramakrishna
  • 712
  • 8
  • 26