Так что я использую coredata для моделирования моих отношений.
Вкратце это модель
Тип A может иметь один или несколько типов типа B
Тип B имеет обратную зависимость, связанную с типом A
Тип B может иметь один или несколько типов типа C Тип C имеет обратную зависимость от связи с одним из типов B
С точки зрения пользовательского интерфейса, у меня есть контроллер навигации с контроллерами, которые последовательноустанавливает первый объект A (VC-1), затем другой viewcontroller (VC-2) создает объект B (я передаю объект A этому контроллеру), и объект B добавляется к объекту A.Точно так же происходит и с B и C.Третий Viewcontroller (VC3) сначала создает объект C и назначает его переданному объекту B.
Также между этими контроллерами представления также передается управляемый объект ObjectOntext.
Так что мой вариант использования таков, что, хотя viewcontroller (VC-3) является верхним контроллером, действие кнопки будет продолжать создавать несколько объектов типа C и добавлять их к тому же объекту типа B, который был передан.Также как часть этой функции я сохраняю контекст managedObject после сохранения каждого типа C.
например, код в viewcontroller 3
- (void) SaveNewTypeC
{
TypeC *newtypeC = (Question*)[NSEntityDescription insertNewObjectForEntityForName:@"TypeC" inManagedObjectContext:managedObjectContext];
[newtypeC setProp1:] ;
[newtypeC setProp2:]
..
..
// setting up the inverse relationship here .
[newtypeC setBTypeObject: typeBObject];
// adding another typeC object to the single typeB object we own here
[typeBObject addTypeCInTypeBObject:newtypeC];
[section setTotalCObjectCount:[ NSNumber numberWithInt:typeCIndex++]];
NSError *error = nil;
if (![managedObjectContext save:&error]) {
// Handle error
NSLog(@"Unresolved error %@, %@, %@", error, [error userInfo],[error localizedDescription]);
abort(); // Fail
}
[newtypeC release];
}
- (IBAction)selectedNewButton:(id)sender {
[self SaveNewTypeC];
[self startRepeatingTimer];
}
ПЛОХОЙ ДОСТУП, кажется, появляется выше, где
// setting up the inverse relationship here .
[newtypeC setBTypeObject: typeBObject];
// adding another typeC object to the single typeB object we own here
[typeBObject addTypeCInTypeBObject:newtypeC];
Любые подсказки по разрешению этой проблемы будут полезны.