Я новичок в основных данных, поэтому извините, если я неправильно понял некоторые термины.
В моем файле xcdatamodel есть несколько объектов.Все они взаимосвязаны с отношениями и обратными отношениями.Если я соединю два из этих объектов с помощью следующего кода, обратное отношение не будет установлено.
[managedObj1 setValue: managedObj2 forKey:@"relatiohipName"];
Мне кажется, мне нужно вручную установить обратное отношение с помощью следующего кода
[managedObj1 setValue: managedObj2 forKey:@"relatiohipName"];
[managedObj2 setValue: managedObj1 forKey:@"inverseRelatiohipName"];
Это кажется мне неправильным, но это единственный способ заставить механизм работать.Я посмотрел на базу данных sqlite после запуска первого блока кода, и обратная связь не заполняется, но если я запускаю второй код, связь есть.
Кроме того, создается впечатление, что когда я создаю объектв основных данных я не могу изменить его после этого.ДП остается прежним.Когда я выхожу из приложения и перезапускаю его, я, похоже, теряю все связи и атрибуты объекта.Полученные объекты в моем коде имеют только переменные-члены, равные nil.
РЕДАКТИРОВАТЬ:
Закомментированные вещи - это то, как это было сделано раньше, а некомментированные вещи - какЯ делаю это сейчас без удачи.
Здесь я создаю объекты:
NSEntityDescription* mobileEntity = [NSEntityDescription entityForName:@"WebServiceAuthService_mobileAdvertisementVO" inManagedObjectContext:managedObjectContext];
WebServiceAuthService_mobileAdvertisementVO *newObject = [NSEntityDescription insertNewObjectForEntityForName:[mobileEntity name] inManagedObjectContext:managedObjectContext];
//WebServiceAuthService_mobileAdvertisementVO *newObject = [NSEntityDescription insertNewObjectForEntityForName:@"WebServiceAuthService_mobileAdvertisementVO" inManagedObjectContext:managedObjectContext];
Здесь я назначаю одну из переменных-членов объектов:
[self setValue:newChild forKey:@"advertisement"];
//self.advertisement = newChild;
Здесь я сохраняю контекст:
NSError *error = nil;
if (managedObjectContext != nil)
{
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])
{
DLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}