2015-09-12 4 views
0

Я использую CoreData в своем приложении, и у меня есть два основных объекта, допустим, Cats and Dogs. У меня есть этот метод, который я использую, чтобы инициализировать свой контекст:iOS - обновление нескольких объектов и контекстов CoreData

 - (NSManagedObjectContext *)managedObjectContext 
{ 
NSManagedObjectContext *context = nil; 
id delegate = [[UIApplication sharedApplication] delegate]; 
if ([delegate performSelector:@selector(managedObjectContext)]) { 
context = [delegate managedObjectContext]; 
} 
return context; 
} 

Это относится к этому методу в моем App Делегат:

- (NSManagedObjectContext *)managedObjectContext 
{ 
    if (_managedObjectContext != nil) { 
     return _managedObjectContext; 
    } 

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; 
    if (coordinator != nil) { 
     _managedObjectContext = [[NSManagedObjectContext alloc] init]; 
     [_managedObjectContext setPersistentStoreCoordinator:coordinator]; 
    } 
    return _managedObjectContext; 
} 

Теперь, в какой-то момент, я должен обновить некоторые данные моя сущность кошки.

  NSManagedObjectContext *context = [self managedObjectContext]; 
      NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Cats"]; 
      NSMutableArray *catsArrayData = [[context executeFetchRequest:fetchRequest error:nil] mutableCopy]; 
    NSManagedObject *aCat = [catsArrayData objectAtIndex:i]; 
    NSMutableArray *catsArray = [aCat valueForKey:@"cat"]; 
    [catsArray addObject:responseData]; 
    [aCat setValue:catsArray forKey:@"cat"]; 
        NSError *error = nil; 
[context save:&error]; 

Затем, я хочу сделать то же самое для своей сущности. Поэтому я использую тот же код, но для сущности собак. Это в другой части моего кода, так что я должен переопределить:

NSManagedObjectContext *context = [self managedObjectContext]; 

Но проблема в том, что даже если я сохраню этот второй контекст, это на самом деле не сохраняется. Данных нет. Как я могу решить эту проблему?

+0

Трудно определить из кода, который вы предоставили, но я сомневаюсь, что вы должны переопределить 'NSManagedObjectContext'. Я бы предположил, что ваша проблема связана с структурой вашего кода. – andrewbuilder

+0

@andrewbuilder Да, я думаю, что с этим кодом сложно, но я не хотел ставить страницу whooole. Но в принципе оба объекта называются буквально точно так же, как только имя сущности, которое изменяется. Но во втором они не спасены ... Как я могу предоставить вам дополнительную информацию? –

+0

Некоторые пользователи загружают свой проект или соответствующие классы в GitHub. Более того, вы можете удалить ссылки на MOC и заменить кодом, который включает ваш метод сохранения. Прежде всего, я бы рекомендовал вам узнать о полиморфизме контроллера, иерархии и наследовании. Лекции Стэнфордского университета Пол Хегарти на iTunes U великолепны. – andrewbuilder

ответ

2

Вам необходимо реализовать свой механизм уведомления об изменении, это хороший источник, чтобы узнать его. Multi-Context CoreData.

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