Я пытаюсь настроить страницу контактов, где я могу добавлять/редактировать контакты. Тем не менее, я получаю нулевое значение, когда пытаюсь вызвать свой CoreDataStack.context.Управляемый контекст из CoreDataStack не сохраняется через навигационную панель
Здесь берет свое начало в AppDelegate
lazy var coreDataStack = CoreDataStack()
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
UINavigationBar.appearance().barTintColor = navigationMainColor
UINavigationBar.appearance().tintColor = navigationMainItemColor
let navigationController = window!.rootViewController as! UINavigationController
let listViewController = navigationController.topViewController as! ViewController
listViewController.coreDataStack = coreDataStack
return true
}
я передать его в мой первый контроллер представления и внутри RootViewController У меня есть кнопка, которая посылает меня в другой контроллер представления. В rootViewController контекст CoreDataStack все еще существует, когда я вызываю print (coreDataStack). Поэтому я знаю, что он существует в первом представлении. Кнопка, которую я нажимаю для перехода на страницу контактов, представляет собой кнопку на панели инструментов.
Возможная проблема 1 может заключаться в том, что я не перемещаюсь с помощью панели навигации и не с нее, однако все представления встроены в стек навигационной панели.
Нужно ли мне подготовитьForSegue внутри первого контроллера представления, чтобы передать NSManagedObjectContext?
Существует также контроллер навигации между контактами и новым контроллером управления контактами. Но, похоже, ноль возвращается, прежде чем это произойдет. В контактах просмотра КОНТРОЛЛЕР prepareForSegue, который проверяет, если пользователь пытается добавить контакт найден здесь
else if segue.identifier == "AddContact" {
let navigationController = segue.destinationViewController as! UINavigationController
let addViewController = navigationController.topViewController as! NewContactViewController
let contactEntity = NSEntityDescription.entityForName("Contact", inManagedObjectContext: coreDataStack.context)
let newContact = Contact(entity: contactEntity!, insertIntoManagedObjectContext: coreDataStack.context)
addViewController.contact = newContact
addViewController.context = newContact.managedObjectContext
addViewController.delegate = self
}
И ошибка я получаю то, что coreDataStack.context, когда я пытаюсь создать новый контакт возвращая ноль. Я часами и часами прогонял это, и я думаю, что у меня что-то действительно малое или большое. В любом случае, я просто хочу изучить Core Data и стать лучше.
Так просто получить контроллер навигации, а затем получить контроллер назначения? Это просто вопрос destinationcontroller.context = self.context в файле подготовки для первого контроллера представления? – ggworean
Ответ обновлен, чтобы продемонстрировать, о чем я говорю. –
О, так что этот prepareforsegue находится во втором контроллере представления, где его получают тип подготовки. Awesome, thanks – ggworean