Сохраняет ли coredata после таких изменений? - PullRequest
0 голосов
/ 30 марта 2012

У меня есть CoreData в моем приложении с классом Entry, который содержит классы NSOrderedSet of Media.

У меня есть этот код для добавления нового элемента Media в NSOrderedSet:

-(void)addImage:(UIImage *)image isInPhotoLibrary:(BOOL)isInPhotoLibrary {

    Media *media = [[Media alloc] init];
    media.type = @"Image";
    media.originalImage = UIImageJPEGRepresentation(image, 1.0);
    media.isInPhotoLibrary = [NSNumber numberWithBool:isInPhotoLibrary];

    [self addMediaObject:media];

}

Будет ли это автоматически сохранять изменения, или мне придется сделать это самому.Если да, то мне нужно будет передать в контексте, чтобы сделать это, или есть другой способ?

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

Нет, этот код вообще не имеет ссылок на базовые данные.

Является ли Media NSManagedObject? Если это так, вам нужно создать его так:

Media *media = [NSEntityDescription insertNewObjectForEntityForName:@"Media" inManagedObjectContext:context];

Это поместит его в контекст вашего управляемого объекта.

Если вы хотите сохранить его, вам нужно вызвать save: в контексте управляемого объекта.

РЕДАКТИРОВАТЬ ТАКЖЕ ....

В вашем классе Entry у вас, вероятно, будет сгенерированный метод, который вы используете для добавления объектов в NSSet. Он будет в категории (CoreDataGeneratedAccessors) в заголовочном файле Entry

- (void)addMediaObject:(Media *)value;
1 голос
/ 30 марта 2012

Нет, это не будет .. Если вы хотите сохранить изменения в базе данных в основных данных, вы должны вызвать функцию сохранения для этого .. Я предполагаю, что Media является своего рода NSManagedObject классом.Для сохранения изменений в persistent store необходимо вызвать метод save.До тех пор изменения просто временно присутствуют в вашем scratch board/ ManagedObjectContext.

. Вот как я могу сохранить изменения:

Worker *worker =  (Worker *)[NSEntityDescription insertNewObjectForEntityForName:@"Worker" inManagedObjectContext:self.managedObjectContext];

worker.name=txtContact.text;
worker.address=txtAddress.text;
worker.zipCode=txtZip.text;
worker.city=txtCity.text;
worker.mobile=txtMobile.text;

 NSError *error;

if (![managedObjectContext save:&error]) 
{
    NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...