Я плохо знаком с основными данными, поэтому, пожалуйста, извините, если я неправильно понял некоторые термины.
У меня есть несколько объектов в моем файле xcdatamodel. Все они взаимосвязаны отношениями и обратными отношениями. Если я соединю два из этих объектов с помощью следующего кода, обратная связь не будет установлена.
[managedObj1 setValue: managedObj2 forKey:@"relatiohipName"];
Кажется, мне придется вручную установить обратную связь с помощью следующего кода
[managedObj1 setValue: managedObj2 forKey:@"relatiohipName"];
[managedObj2 setValue: managedObj1 forKey:@"inverseRelatiohipName"];
Это кажется мне неправильным, но это единственный способ. может показаться, что механизм заработал. Я посмотрел на базу данных sqlite после запуска первого блока кода, и обратная связь не заполнена, но если я запустил второй код, связь будет.
Кроме того, похоже, что как только я создаю объект в Core Data После этого я не могу это изменить. ДП остается прежним. Как только я выхожу из приложения и перезапускаю его, я, кажется, теряю все отношения и атрибуты объекта. результирующие объекты в моем коде не имеют ничего, кроме 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();
}
}