2014-02-05 3 views
-1

Я просмотрел всю документацию по классу для основных данных, и я не могу найти программное обновление значений в основном объекте данных. Например, у меня есть структура, аналогичная этой:Обновление объекта в Core Data в ios 7

Имя | возраст | тип

A | 30 | Сохранить

B | 20 | Сэкономьте

C | 12 | Вход

Также я был запущен второй раз значение будет

Имени | возраст | тип

A | 30 | Сохранить

B | 20 | Стажер

C | 12 | Вход

Я хочу только подчеркнул значение должно быть обновление на основных данных

пожалуйста кто-нибудь мне помочь, заранее спасибо

+0

Не уверен, что вам нужно с вашего вопроса. Не могли бы вы привести пример? –

+0

Я хочу обновить таблицу как тип имени B –

+2

Найти B (с NSPredicate), изменить его тип, сохранить его (с помощью контекста). Вот как работает CoreData. – Larme

ответ

1

В CoreData это довольно просто, чтобы вставить/обновить/или удалять любой объект модели. Предположим, у вас есть объект управляемого объекта с именем MyObject. В своем управляемом объекте подкласса вы имеете три свойства:

@property (nonatomic, retain) NSString * name; 
@property (nonatomic, retain) NSString * age; 
@property (nonatomic, retain) NSString * type; 

Теперь, если вы хотите, чтобы вставить значение этого объекта, вы, чтобы сделать что-то вроде этого:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
NSManagedObjectContext *managedObjectContext = [appDelegate managedObjectContext]; 

MyObject *myObject = [NSEntityDescription insertNewObjectForEntityForName:@"MyObject" inManagedObjectContext:managedObjectContext]; 

myObject.name = @"a"; 
myObject.age = @"30"; 
myObject.type = @"type"; 

NSError *error; 
if([managedObjectContext save:&error]) 
{ 
    // success alert 
} 

Чтобы обновить объект , это гораздо более простой процесс. Предположим, что у вас есть ранее сохраненный экземпляр класса объекта модели с именем myObject. Все, что вы сделать, чтобы обновить это, как показано ниже:

myObject.name = @"a"; 
myObject.age = @"30"; 
myObject.type = @"type"; 

NSError *error; 
if([managedObjectContext save:&error]) 
{ 
    // success alert 
} 

Чтобы удалить этот MyObject экземпляр:

[managedObjectContext deleteObject:myObject]; 
NSError *error; 
if([managedObjectContext save:&error]) 
{ 
    // success alert 
} 

Я надеюсь, что это помогает. Ура!

+0

Hera, что показывает объект 'matches' –

0

Сначала вы должны найти объект с именем B. Затем вы можете изменить его свойство типа и снова сохранить.

Помните, что «имя» должно быть уникальным столбцом. Если нет, вы можете создать уникальное значение, например «id» или что-то еще. Если имеется более одной записи с именем «B», нижеприведенный код изменит значение первой записи.

- (void)changeTheValue 
{ 
    NSArray* response; 

    @try { 
     // Fetch the record from db 
     NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; 
     NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Entities"]; 
     NSPredicate *predicate = [NSPredicate predicateWithFormat: 
            @"(Name == B)"]; 
     [fetchRequest setPredicate:predicate]; 
     response = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy]; 
    } 
    @catch (NSException *exception) { 
     NSLog(@"%@",exception); 
    } 
    @finally { 

// Now we have the object that we're looking for, we can update it 
     [[response firstObject] setValue:@"Entry" forKey:@"Type"]; 
     [self saveData]; 
    } 
} 

- (void)saveData 
{ 
    NSError *error = nil; 
    @try { 
     [self.managedObjectContext save:&error]; 
    } 
    @catch (NSException *exception) { 
     NSLog(@"Error saving: %@",error); 
    } 
    @finally { 
     NSLog(@"Success saving"); 
    } 
} 
Смежные вопросы