2012-02-07 3 views
2

Я пытаюсь использовать segues для передачи основных данных MOC и объектов в другие контроллеры View.Инъекция ядра данных (с зависимостью) Раскадровка

Поэтому я использую метод prepareForSegue и делать что-то вроде этого

SecondViewController *svc = (SecondViewController *)[segue destinationViewController]; 

//passing the current managed object context to the other view controller 
svc.managedObjectContext = managedObjectContext 

Затем я хочу, чтобы передать currentEntity к тому же контроллеру

//rootEntity is -- TheManagedObject * rootEntity in the second view controller 
svc.rootEntity = currentEntity 

зрения я не уверен, если выше svc.rootEntity - это правильный способ сделать это, но он чувствует, что это правильный способ сделать это, чтобы ввести currentEntity в следующем контроллере представления.

Во втором контроллере просмотра я хочу вставить новый объект для объекта на основе вышеописанной инъекции rootEntity.

Я знаю, я обычно создать новый управляемый объект, делая это:

NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:@"TheNewObject" in  ManagedObjectContext:managedObjectContext //MOC injected from the First View Controller 

Моя проблема заключается в том, что я хочу сделать выше newObject но я хочу быть зависимым (отношения) к первым прошел entity (вышеупомянутый rootEntity).

Я пришел близко, но я продолжаю получать несвязанные NewObjects (должен быть один ко многим)

Следующий шаг бы быть повторить выше и вставьте еще один уровень в следующем контроллере представления на основе в NewObject во втором представлении Контроллер.

Я читал книгу Зарры и некоторые другие, но все они используют методы init, которые, похоже, не работают с segues.

Спасибо,

ответ

1

Вы все делаете правильно. После того, как вы находитесь в своем новом контроллере представления, просто продолжайте, как и раньше, при вставке новых объектов и отношений. В конце концов, вы имеете в виду тот же контекст управляемого объекта.

Так, например, если вы хотите вставить новый объект, который является отношение вы могли бы сделать что-то вроде этого:

NSManagedObject *newObject = [NSEntityDescription 
    insertNewObjectForEntityForName:@"SubEntity" 
    inManagedObjectContext:managedObjectContext]; 
newObject.rootEntity = self.rootEntity; 

newObject доброй «SubEntity» теперь связанный с rootObject.

+0

Прекрасная благодарность, теперь я чувствую, что наконец-то я получил ручку по основным данным. – jamesC

1

Я не думаю, что раскадровки или перетекает имеет ничего общего с вашей проблемой.

Где код, в котором вы устанавливаете отношения? Вы должны быть в состоянии просто пойти

[self.rootEntity addNewObjectsObject:newObject]; 

или, проще сделать из многих конца отношений:

newObject.rootEntity = self.rootEntity; 

(обратите внимание, я предположил, что имена отношений здесь).

В качестве бонуса вам не нужно передавать контекст управляемого объекта. Вы можете получить это из объекта rootEntity. Все управляемые объекты ссылаются на их контекст. rootEntity.managedObjectContext

+0

О, я думал, что должен был передать контекст. Меньше кода = лучший код. Спасибо, что нашли время. – jamesC

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