Не могли бы вы помочь мне со следующейПередача объектов CoreData между видами без managedObjectContext
Я пишу приложение, используя CoreData и два контроллера представления.
ControllerA вид таблицы и просто перечисляет данные ControllerB представляет собой контроллер, содержащее несколько UITextFields
Для редактирования строки на ControllerA я установить свойство на ControllerB передавая мой CoreData сущности модели объекта например.
viewControllerB.item = [self.fetchedResultsController objectAtIndexPath:indexPath];
После этого редактируется содержимое элемента на ViewControllerB передается обратно ViewControllerA через делегата и сохранены.
Это прекрасно работает, бит, с которым я борюсь, - лучший способ добавить новый элемент в CoreData без настройки управляемого объекта ObjectContext на ViewControllerB.
Я попытался пропускание нового объекта с
ItemData *item = [NSEntityDescription insertNewObjectForEntityForName:@"ItemData" inManagedObjectContext:self.managedObjectContext];
viewControllerB.item = item;
это работает, если я вхожу в форму на ViewControllerB с данными, но если я отменю вид и поп его я остаюсь с (нулем) объект в CoreData.
Я также попытался создать экземпляр объекта CoreData ItemData с помощью стандартного init, но теперь понимаю, что это не сработает, потому что CoreData не понимает контекст, а также не имеет getter/setters для свойств.
Что лучше всего подходит для этой ситуации?
1) Должен ли я просто передать managedObjectContext для просмотраControllerB? 2) Создайте класс модели, чтобы удерживать значения из формы и передавать их обратно, а затем работать с материалами CoreData?
3) или есть правильный способ делать то, что я пытаюсь сделать?
Я слабо следую за iOS Apprentice 2, чтобы иметь дело с Storiesboards и т. Д., Но в этом класс модели передается туда и обратно, который, как я знаю, отлично работает, его проблема с CoreData.
Я надеюсь, что приведенное выше ясно и что используемая терминология правильна.
Обратитесь к любой помощи.
Итак, в основном я должен передать элемент, который создается из следующего ItemData * item = [NSEntityDescription insertNewObjectForEntityForName: @ "ItemData" inManagedObjectContext: self.managedObjectContext]; к другому представлению, и если с ним ничего не сделано, я должен удалить его. Поэтому, если я изменю метод делегирования didCancel, чтобы вернуть управляемый объект, я могу удалить этот объект из основных данных. –
Этот ответ правильный, за исключением части, касающейся необходимости передачи контекста. Если вы передаете управляемый объект, это содержит ссылку на контекст, так что вам это тоже не нужно. Удаление объекта в методе обратного вызова - путь. – jrturton