2016-02-11 1 views
0

Надеюсь, это дубликат других ссылок: How to update existing object in Core Data?Как обновить запись в основных данных в iOS?

Но мой сценарий немного отличается.

Дело в том, что я создал один образец базового проекта данных.

Шаг 1: У меня есть 3 ViewController классы

В 1-й экран: я создал одно поле в основных данных "пароль" ==> я сэкономил, используя код, как:

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]); 
} 

На втором экране: У меня есть два текстовых поля: Oldpassword & newpassword . Здесь я сохранил старый пароль в NSUserDefaults, а на втором экране я проверял состояние погоды oldpassword правильно или нет -> Это прекрасно.

Здесь мое требование: я хочу обновить Oldpassword до newpassword ---> на втором экране.

Как это сделать? Не могли бы вы помочь мне в этом отношении?

+0

вы можете посмотреть на него один раз http://www.appcoda.com/core-data-tutorial-update-delete/ –

+0

По используя этот учебник только я создал Demo ---> In В том же представлении контроллер означает, что я могу создавать/обновлять/удалять ===> мое требование - обновлять пароль с одного второго диспетчера представлений до первого viewcontroller –

ответ

0

Здесь я использую такой код:

-(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"]; 
} 
} 
0

Это поможет вам обновить значение.

- (Недействительными) 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]; 

}

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