Я использую 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];
Но проблема в том, что даже если я сохраню этот второй контекст, это на самом деле не сохраняется. Данных нет. Как я могу решить эту проблему?
Трудно определить из кода, который вы предоставили, но я сомневаюсь, что вы должны переопределить 'NSManagedObjectContext'. Я бы предположил, что ваша проблема связана с структурой вашего кода. – andrewbuilder
@andrewbuilder Да, я думаю, что с этим кодом сложно, но я не хотел ставить страницу whooole. Но в принципе оба объекта называются буквально точно так же, как только имя сущности, которое изменяется. Но во втором они не спасены ... Как я могу предоставить вам дополнительную информацию? –
Некоторые пользователи загружают свой проект или соответствующие классы в GitHub. Более того, вы можете удалить ссылки на MOC и заменить кодом, который включает ваш метод сохранения. Прежде всего, я бы рекомендовал вам узнать о полиморфизме контроллера, иерархии и наследовании. Лекции Стэнфордского университета Пол Хегарти на iTunes U великолепны. – andrewbuilder