В дополнение к моему первому ответу, который по сути совпадает с принятым ответом - за исключением того, что с моим вы можете использовать его с любым шаблоном или без него (а не только с шаблоном разделенного представления) - я предоставляюответ, который еще более прямо отвечает на ваш вопрос, и как передать ссылку на ваш объект диспетчера контекста в контроллер представления назначения после перехода.
Этот ответ, как и мой первый (и в отличие от принятогоответ) предполагает, что вы по крайней мере знаете, где находится контекст управляемого объекта в вашем приложении, и что у вас есть базовые навыки, необходимые для создания ссылки на него (в отличие от принятого ответа, который предполагает, что вы не можете использовать Find ...в XCode также вы не можете вспомнить, как назначить значение указателю, например:
id moc = [reference to the managed object context object that you can find]
Так как вы, кажется, лучше реагируете на ответы, которые включают шаблон, попробуйте переопределение метода prepareForSegue
, предоставленное вПодкласс UIViewController в шаблоне Single Application View. Внутри вы заметите парукомментариев, оставленных Apple.
Короче говоря, вы создадите ссылку на целевой контроллер вида следующим образом:
SecondVC *vc2 = segue.destinationController;
Затем вы установите значение указателя ссылки наПеременная контекста управляемого объекта в контроллере представления назначения со значением точки привязки к нему, где бы ни был создан экземпляр:
vc2.mbo = AppDelegate.mbo;
Я привел очень подробный пример (с демонстрацией видео) создания сегментов безраскадровки (то есть программно) по адресу:
Установить идентификатор segue программно
Кстати, если у вас возникли трудности с пониманием использования ссылки AppDelegate в моемответ, я объясню это:
Apple помещает свою ссылку на контекст управляемого объекта Core Data в AppDelegate.h / .m всякий раз, когда вы создаете новый проект с использованием любого шаблона XCode, а также проверяетефлажок «Использовать данные кода» во время настройки шаблона.Чтобы использовать эту ссылку во всем приложении (т. Е. В других файлах .m, и таким образом вы случайно не создадите несколько ее экземпляров), вы создаете глобальную ссылку для всего приложения на AppDelegate, которая является делегатом UIApplication., который является одноэлементным, что делает AppDelegate также одноэлементным, просто добавляя его в каждый файл реализации, в котором вы собираетесь ссылаться на контекст управляемого объекта:
import "AppDelegate.h"
define AppDelegate ((AppDelegate *) [[UIApplication sharedApplication] делегат])
Теперь вы получаете доступ к объекту контекста управляемого объекта везде, где добавляются эти две строки:
[AppDelegate.mbo...];